from builder import *

basic_templates = []

basic_templates.append(Template("""
###########O###########
#.....................#
#.....................#
#.....................#
#.....................#
#.....................#
#.....................#
#.....................#
#.....................#
#.....................#
#.....................#
O.....................O
#.....................#
#.....................#
#.....................#
#.....................#
#.....................#
#.....................#
#.....................#
#.....................#
#.....................#
#.....................#
###########O###########
""",use_prob=0.15,inheritable_properties={TP_WANT_ENCOUNTER:1,TP_OPEN:1}))


basic_templates.append(Template("""
###########O###########
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
OXXXXXXXXXXXXXXXXXXXXXO
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
###########O###########
""",use_prob=0.4,inheritable_properties={TP_CONVERT:{'#':'~'},TP_WET:1,TP_OPEN:1}))


basic_templates.append(Template("""
###########O###########
#MMMMMMMMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMMMMMMMM#
OMMMMMMMMMMMMMMMMMMMMMO
#MMMMMMMMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMMMMMMMM#
###########O###########
""",use_prob=0.4,inheritable_properties={TP_CONVERT:{'#':'~'},TP_WET:1,TP_OPEN:1,TP_MAZY:1}))


basic_templates.append(Template("""
###########O###########
#BBBBBBBBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBBBBBBBB#
OBBBBBBBBBBBBBBBBBBBBBO
#BBBBBBBBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBBBBBBBB#
###########O###########
""",use_prob=0.2,inheritable_properties={TP_CONVERT:{'#':'~'},TP_WET:1,TP_OPEN:1}))


basic_templates.append(Template("""
#######################
#~~~~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~...~~~~~~~~~#
#~~~~~~~.......~~~~~~~#
#~~~~~~.........~~~~~~#
#~~~~~~.........~~~~~~#
###########+###########
""",use_prob=0.4,inheritable_properties={TP_WET:1,TP_OPEN:1,TP_ORGANIC:1}))


basic_templates.append(Template("""
###########+###########
#~~~~~~~~~~.~~~~~~~~~~#
#~~~~~~~~~~.~~~~~~~~~~#
#~~~~~~~~~...~~~~~~~~~#
#~~~~~~~~.....~~~~~~~~#
#~~~~~~~~.....~~~~~~~~#
#~~~~~~~~~...~~~~~~~~~#
#~~~~~~~~~~.~~~~~~~~~~#
#~~~~~~~~~~.~~~~~~~~~~#
#~~~~~~~~~...~~~~~~~~~#
#~~~~~~~~.....~~~~~~~~#
#~~~~~~~~.....~~~~~~~~#
#~~~~~~~~.....~~~~~~~~#
#~~~~~~~~~...~~~~~~~~~#
#~~~~~~~~~~.~~~~~~~~~~#
#~~~~~~~~~~.~~~~~~~~~~#
#~~~~~~~~~...~~~~~~~~~#
#~~~~~~~~.....~~~~~~~~#
#~~~~~~~~.....~~~~~~~~#
#~~~~~~~~~...~~~~~~~~~#
#~~~~~~~~~~.~~~~~~~~~~#
#~~~~~~~~~~.~~~~~~~~~~#
###########+###########
""",use_prob=0.4,inheritable_properties={TP_WET:1,TP_OPEN:1,TP_CORRIDOR:1}))


basic_templates.append(Template("""
###########+###########
#~~~~~~~~~~.~~~~~~~~~~#
#~~~~~~~~~~.~~~~~~~~~~#
#~~~~~~~~~...~~~~~~~~~#
#~~~~~~~~.....~~~~~~~~#
#~~~~~~~~.....~~~~~~~~#
#~~~~~~~~~...~~~~~~~~~#
#~~~~~~~~~~.~~~~~~~~~~#
#~~~~~~~~~~.~~~~~~~~~~#
#~~~..~~~~...~~~~..~~~#
#~~....~~.....~~....~~#
+.....................+
#~~....~~.....~~....~~#
#~~~..~~~~...~~~~..~~~#
#~~~~~~~~~~.~~~~~~~~~~#
#~~~~~~~~~~.~~~~~~~~~~#
#~~~~~~~~~...~~~~~~~~~#
#~~~~~~~~.....~~~~~~~~#
#~~~~~~~~.....~~~~~~~~#
#~~~~~~~~~...~~~~~~~~~#
#~~~~~~~~~~.~~~~~~~~~~#
#~~~~~~~~~~.~~~~~~~~~~#
###########+###########
""",use_prob=0.4,inheritable_properties={TP_WET:1,TP_OPEN:1,TP_CORRIDOR:1}))


basic_templates.append(Template("""
#######################
#######################
############~~~~#######
#######~~~~~~~~~~~#####
#####~~~~~~~~~~~~~~####
####~~~~~#######~~~~###
##~~~~~##########~~~###
##~~~############~~~###
##~~~#########~~~~~~###
##~~~#######~~~~~~~~~##
##~~~#######~~##.##~~~#
##~~~######~~~#XXX#~~~#
##~~~~#####~~~#XXX#~~~#
###~~~~#####~~#XXX#~~##
####~~~~####~~#####~~##
#####~~~~####~~~~~~~###
######~~~~~###~~~~~####
#######~~~~~####~######
#########~~~~##########
##########~.~##########
#########.....#########
########.......########
###########+###########
""",use_prob=0.2,inheritable_properties={TP_WET:1},child_only_properties={TP_NO_INTERIOR_WALLS:1,TP_WANT_GOOD_ENCOUNTER:1}))


basic_templates.append(Template("""
###########O###########
#*********....********#
#******..**....*******#
#*****...***..*****..*#
#*..**...*********....#
#....*******..*****..*#
#*..**..***....*******#
#****....***..***..***#
#*****..********....**#
#****************..***#
#.****..************..#
O..**....*******..**..O
#..***..*******....*..#
#***.***********..****#
#*....****************#
#**..**..***..*****..*#
#*****....*....***....#
#******..***..*****..*#
#**..**********..*****#
#*....********....****#
#**..*****..***..*****#
#********....*********#
###########O###########
""",use_prob=0.05,inheritable_properties={TP_FIERY:1,TP_OPEN:1}))


basic_templates.append(Template("""
###########O###########
#~~~~~~~~~....~~~~~~~~#
#~~~~~~..~~....~~~~~~~#
#~~~~~...~~~..~~~~~..~#
#~..~~...~~~~~~~~~....#
#....~~~~~~~..~~~~~..~#
#~..~~..~~~....~~~~~~~#
#~~~~....~~~..~~~..~~~#
#~~~~~..~~~~~~~~....~~#
#~~~~~~~~~~~~~~~~..~~~#
#.~~~~..~~~~~~~~~~~~..#
O..~~....~~~~~~~..~~..O
#..~~~..~~~~~~~....~..#
#~~~.~~~~~~~~~~~..~~~~#
#~....~~~~~~~~~~~~~~~~#
#~~..~~..~~~..~~~~~..~#
#~~~~~....~....~~~....#
#~~~~~~..~~~..~~~~~..~#
#~~..~~~~~~~~~~..~~~~~#
#~....~~~~~~~~....~~~~#
#~~..~~~~~..~~~..~~~~~#
#~~~~~~~~....~~~~~~~~~#
###########O###########
""",use_prob=0.15,inheritable_properties={TP_WET:1,TP_OPEN:1}))


basic_templates.append(Template("""
###########O###########
#.********...*********#
#**.******...******.*.#
#******.********.*****#
#**.*****.*.**.****.**#
#*****.**********.****#
#***.*****.**.*****.**#
#********.***********.#
#***.**.***.***.**.***#
#********.************#
#..***.**********.**..#
O..*.***.***.*.*****..O
#..*******.*****.***..#
#*********************#
#**.*.**.***.*******.*#
#*****************.***#
#**.*.*****.****.*****#
#******.**************#
#**.*****.****.*.*****#
#******************.**#
#****.****...****.****#
#*********...*********#
###########O###########
""",use_prob=0.05,inheritable_properties={TP_FIERY:1,TP_OPEN:1}))


basic_templates.append(Template("""
###########O###########
#.~~~~~~~~...~~~~~~~~~#
#~~.~~~~~~...~~~~~~.~.#
#~~~~~~.~~~~~~~~.~~~~~#
#~~.~~~~~.~.~~.~~~~.~~#
#~~~~~.~~~~~~~~~~.~~~~#
#~~~.~~~~~.~~.~~~~~.~~#
#~~~~~~~~.~~~~~~~~~~~.#
#~~~.~~.~~~.~~~.~~.~~~#
#~~~~~~~~.~~~~~~~~~~~~#
#..~~~.~~~~~~~~~~.~~..#
O..~.~~~.~~~.~.~~~~~..O
#..~~~~~~~.~~~~~.~~~..#
#~~~~~~~~~~~~~~~~~~~~~#
#~~.~.~~.~~~.~~~~~~~.~#
#~~~~~~~~~~~~~~~~~.~~~#
#~~.~.~~~~~.~~~~.~~~~~#
#~~~~~~.~~~~~~~~~~~~~~#
#~~.~~~~~.~~~~.~.~~~~~#
#~~~~~~~~~~~~~~~~~~.~~#
#~~~~.~~~~...~~~~.~~~~#
#~~~~~~~~~...~~~~~~~~~#
###########O###########
""",use_prob=0.15,inheritable_properties={TP_WET:1,TP_OPEN:1}))


basic_templates.append(Template("""
###########O###########
#.....................#
#.....................#
#.....................#
#.....................#
#........~~~~~........#
#.......~~~~~~~.......#
#......~~~~~~~~~......#
#.....~~~~~~~~~~~.....#
#.....~~~~~~~~~~~.....#
#....~~~~~~~~~~~~~....#
O....~~~~~~~~~~~~~....O
#....~~~~~~~~~~~~~....#
#.....~~~~~~~~~~~.....#
#.....~~~~~~~~~~~.....#
#......~~~~~~~~~......#
#.......~~~~~~~.......#
#........~~~~~........#
#.....................#
#.....................#
#.....................#
#.....................#
###########O###########
""",use_prob=0.1,inheritable_properties={TP_WET:1,TP_WANT_ENCOUNTER:1,TP_OPEN:1}))


basic_templates.append(Template("""
###########O###########
#.....................#
#.....................#
#.....................#
#.....................#
#........~~~~~........#
#.......~~~~~~~.......#
#......~~~~~~~~~......#
#.....~~~~~~~~~~~.....#
#.....~~~~~~~~~~~.....#
#....~~~~~~...~~~~....#
O....~~~~~..!..~~~....O
#....~~~~~~...~~~~....#
#.....~~~~~..~~~~.....#
#.....~~~~..~~~~~.....#
#......~~..~~~~~......#
#.........~~~~~.......#
#........~~~~~........#
#.....................#
#.....................#
#.....................#
#.....................#
###########O###########
""",use_prob=0.15,inheritable_properties={TP_WET:1,TP_WANT_ENCOUNTER:1,TP_OPEN:1}))


basic_templates.append(Template("""
###########O###########
#.....................#
#.....................#
#.....................#
#.....................#
#......!..............#
#.......~.............#
#.......~~............#
#........~~...........#
#.........~~..........#
#.........~~..........#
O.........~~~.........O
#........~~~~~~.......#
#.....~~~~~~~~~~~~....#
#....~~...~~~.....~...#
#...~.......~~........#
#...........~~~.......#
#.............~~......#
#..............~~~....#
#................~~...#
#.................~...#
#.................~~..#
###########O###########
""",use_prob=0.2,inheritable_properties={TP_WET:1,TP_OPEN:1}))


basic_templates.append(Template("""
###########O###########
#.....................#
#.....................#
#......~~~~...........#
#....~~~~~~...........#
#....~~~~~~~..........#
#....~~~~~~~..........#
#.....~~~~~~..........#
#.....~~~~~~..........#
#.......~~~...........#
#.......~~....~~~.....#
O............~~~~~....O
#............~~~~~....#
#............~~~~~~...#
#....~~~.....~~~~~~~..#
#..~~~~~~.....~~~~~~..#
#..~~~~~~~......~~~...#
#..~~~~~~~......~~~...#
#...~~~~~~............#
#...~~~~~~............#
#.....~~..............#
#.....................#
###########O###########
""",use_prob=0.2,inheritable_properties={TP_WET:1,TP_OPEN:1}))


basic_templates.append(Template("""
###########O###########
#.....................#
#.....................#
#.....................#
#.....................#
#........~~~~~........#
#.....~~~~~~~~~~~.....#
#.....~~~~~~~~~~~.....#
#.....~~.......~~.....#
#....~~~.##.##.~~~....#
#....~~~.#XXX#.~~~....#
O....~~~.#XXX#.~~~....O
#....~~~.#XXX#.~~~....#
#....~~~.#####.~~~....#
#.....~~.......~~.....#
#.....~~~~~~~~~~~.....#
#.....~~~~~~~~~~~.....#
#........~~~~~........#
#.....................#
#.....................#
#.....................#
#.....................#
###########O###########
""",use_prob=0.1,self_only_properties={TP_WET:1,TP_OPEN:1},child_only_properties={TP_NO_INTERIOR_WALLS:1,TP_WANT_ENCOUNTER:1}))


basic_templates.append(Template("""
###########O###########
#.....................#
#.....................#
#.....................#
#.....................#
#........*****........#
#.....***********.....#
#.....***********.....#
#.....**.......**.....#
#....***.##.##.***....#
#....***.#XXX#.***....#
O....***.#XXX#.***....O
#....***.#XXX#.***....#
#....***.#####.***....#
#.....**.......**.....#
#.....***********.....#
#.....***********.....#
#........*****........#
#.....................#
#.....................#
#.....................#
#.....................#
###########O###########
""",use_prob=0.1,self_only_properties={TP_FIERY:1,TP_OPEN:1},child_only_properties={TP_NO_INTERIOR_WALLS:1,TP_WANT_GOOD_ENCOUNTER:1}))


basic_templates.append(Template("""
###########O###########
#.....................#
#.~~~~~~~~~~~~~~~~~~~.#
#.~~~~~~~~~~~~~~~~~~~.#
#.~~...............~~.#
#.~~...............~~.#
#.~~..#####.#####..~~.#
#.~~..#XXXXXXXXX#..~~.#
#.~~..#XXXXXXXXX#..~~.#
#.~~..#XXXXXXXXX#..~~.#
#.~~..#XXXXXXXXX#..~~.#
O.~~..#XXXXXXXXX#..~~.O
#.~~..#XXXXXXXXX#..~~.#
#.~~..#XXXXXXXXX#..~~.#
#.~~..#XXXXXXXXX#..~~.#
#.~~..#XXXXXXXXX#..~~.#
#.~~..###########..~~.#
#.~~...............~~.#
#.~~...............~~.#
#.~~~~~~~~~~~~~~~~~~~.#
#.~~~~~~~~~~~~~~~~~~~.#
#.....................#
###########O###########
""",use_prob=0.1,self_only_properties={TP_WET:1,TP_OPEN:1},child_only_properties={TP_WANT_ENCOUNTER:1}))


basic_templates.append(Template("""
###########O###########
#.....................#
#.....................#
#.....................#
#.....................#
#.....................#
#.....#####.#####.....#
#.....#XXXXXXXXX#.....#
#.....#XXXXXXXXX#.....#
#.....#XXXXXXXXX#.....#
#.....#XXXXXXXXX#.....#
O.....#XXXXXXXXX#.....O
#.....#XXXXXXXXX#.....#
#.....#XXXXXXXXX#.....#
#.....#XXXXXXXXX#.....#
#.....#XXXXXXXXX#.....#
#.....###########.....#
#.....................#
#.....................#
#.....................#
#.....................#
#.....................#
###########O###########
""",use_prob=0.1,self_only_properties={TP_OPEN:1},child_only_properties={TP_WANT_ENCOUNTER:1}))


basic_templates.append(Template("""
###########O###########
#.....................#
#.#######.....#######.#
#.#XXXXX#.....#XXXXX#.#
#.#XXXXX#.....#XXXXX#.#
#.#XXXXX.......XXXXX#.#
#.#XXXXX#.....#XXXXX#.#
#.#XXXXX#.....#XXXXX#.#
#.#######.....#######.#
#.....................#
#.....#####.#####.....#
O.....#XXXXXXXXX#.....O
#.....#XXXXXXXXX#.....#
#.....#XXXXXXXXX#.....#
#.....#XXXXXXXXX#.....#
#.....#XXXXXXXXX#.....#
#.....#XXXXXXXXX#.....#
#.....#XXXXXXXXX#.....#
#.....#XXXXXXXXX#.....#
#.....#XXXXXXXXX#.....#
#.....###########.....#
#.....................#
###########O###########
""",use_prob=0.1,self_only_properties={TP_OPEN:1},child_only_properties={TP_WANT_ENCOUNTER:1}))


basic_templates.append(Template("""
###########O###########
#.....................#
#.*******************.#
#.*******************.#
#.**...............**.#
#.**...............**.#
#.**..#####.#####..**.#
#.**..#XXXXXXXXX#..**.#
#.**..#XXXXXXXXX#..**.#
#.**..#XXXXXXXXX#..**.#
#.**..#XXXXXXXXX#..**.#
O.**..#XXXXXXXXX#..**.O
#.**..#XXXXXXXXX#..**.#
#.**..#XXXXXXXXX#..**.#
#.**..#XXXXXXXXX#..**.#
#.**..#XXXXXXXXX#..**.#
#.**..###########..**.#
#.**...............**.#
#.**...............**.#
#.*******************.#
#.*******************.#
#.....................#
###########O###########
""",use_prob=0.1,self_only_properties={TP_FIERY:1,TP_OPEN:1},child_only_properties={TP_WANT_ENCOUNTER:1}))


basic_templates.append(Template("""
###########O###########
#.....................#
#.~~~~~~~~~.~~~~~~~~~.#
#.~~~~~~~~~.~~~~~~~~~.#
#.~~XXXXXXXXXXXXXXX~~.#
#.~~XXXXXXXXXXXXXXX~~.#
#.~~XXXXXXXXXXXXXXX~~.#
#.~~XXXXXXXXXXXXXXX~~.#
#.~~XXXXXXXXXXXXXXX~~.#
#.~~XXXXXXXXXXXXXXX~~.#
#.~~XXXXXXXXXXXXXXX~~.#
O.~~XXXXXXXXXXXXXXX~~.O
#.~~XXXXXXXXXXXXXXX~~.#
#.~~XXXXXXXXXXXXXXX~~.#
#.~~XXXXXXXXXXXXXXX~~.#
#.~~XXXXXXXXXXXXXXX~~.#
#.~~XXXXXXXXXXXXXXX~~.#
#.~~XXXXXXXXXXXXXXX~~.#
#.~~XXXXXXXXXXXXXXX~~.#
#.~~~~~~~~~~~~~~~~~~~.#
#.~~~~~~~~~~~~~~~~~~~.#
#.....................#
###########O###########
""",use_prob=0.1,inheritable_properties={TP_CONVERT:{'#':'~'},TP_WET:1,TP_OPEN:1}))


basic_templates.append(Template("""
###########+###########
#.....................#
#.~~~~~~~~~.~~~~~~~~~.#
#.~########.########~.#
#.~#XXXXXXXXXXXXXXX#~.#
#.~#XXXXXXXXXXXXXXX#~.#
#.~#XXXXXXXXXXXXXXX#~.#
#.~#XXXXXXXXXXXXXXX#~.#
#.~#XXXXXXXXXXXXXXX#~.#
#.~#XXXXXXXXXXXXXXX#~.#
#.~#XXXXXXXXXXXXXXX#~.#
+...XXXXXXXXXXXXXXX#~.O
#.~#XXXXXXXXXXXXXXX#~.#
#.~#XXXXXXXXXXXXXXX#~.#
#.~#XXXXXXXXXXXXXXX#~.#
#.~#XXXXXXXXXXXXXXX#~.#
#.~#XXXXXXXXXXXXXXX#~.#
#.~#XXXXXXXXXXXXXXX#~.#
#.~#XXXXXXXXXXXXXXX#~.#
#.~#################~.#
#.~~~~~~~~~~~~~~~~~~~.#
#.....................#
###########O###########
""",use_prob=0.1,self_only_properties={TP_WET:1}))


basic_templates.append(Template("""
#######################
#.....................#
#........~~~~~~~......#
#....~~~~~~~~~~~~~~...#
#.~~~~~~~~~~~~~~~~~~..#
#.~~~~~~~~~##~~~~~~~~.#
#.~~~~~~~######~~~~~~.#
#.~~~~###########~~~~.#
#.~#################~.#
#.~#XXXXXXXXXXXXXXX#~.#
#.~#XXXXXXXXXXXXXXX#~.#
O...XXXXXXXXXXXXXXX...O
#.~#XXXXXXXXXXXXXXX#~.#
#.~#XXXXXXXXXXXXXXX#~.#
#.~#################~.#
#.~~###############~~.#
#.~~~~~#########~~~~~.#
#.~~~~~~~####~~~~~~~~.#
#.~~~~~~~~~~~~~~~~~~~.#
#..~~~~~~~~~~~~~~~~~~.#
#.....~~~~~~~~~~~.....#
#.....................#
#######################
""",use_prob=0.1,self_only_properties={TP_WET:1,TP_OPEN:1},child_only_properties={TP_WANT_ENCOUNTER:1}))


basic_templates.append(Template("""
###########O###########
#.....................#
#.~~~~~~~~~.~~~~~~~~~.#
#.~########.########~.#
#.~#XXXXXXXXXXXXXXX#~.#
#.~#XXXXXXXXXXXXXXX#~.#
#.~#XXXXXXXXXXXXXXX#~.#
#.~#XXXXXXXXXXXXXXX#~.#
#.~#XXXXXXXXXXXXXXX#~.#
#.~#XXXXXXXXXXXXXXX#~.#
#.~#XXXXXXXXXXXXXXX#~.#
O...XXXXXXXXXXXXXXX...O
#.~#XXXXXXXXXXXXXXX#~.#
#.~#XXXXXXXXXXXXXXX#~.#
#~~#XXXXXXXXXXXXXXX#~~#
#~~#XXXXXXXXXXXXXXX#~~#
#~~#XXXXXXXXXXXXXXX#~~#
#~~#XXXXXXXXXXXXXXX#~~#
#~~#XXXXXXXXXXXXXXX#~~#
#~~#################~~#
#~~~~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~~~~#
#######################
""",use_prob=0.1,self_only_properties={TP_WET:1}))


basic_templates.append(Template("""
###########O###########
#.....................#
#.~~~~~~~~~.~~~~~~~~~.#
#.~########.########~.#
#.~#XXXXXXXXXXXXXXX#~.#
#.~#XXXXXXXXXXXXXXX#~.#
#.~#XXXXXXXXXXXXXXX#~.#
#.~#XXXXXXXXXXXXXXX#~.#
#.~#XXXXXXXXXXXXXXX#~.#
#.~#XXXXXXXXXXXXXXX#~.#
#.~#XXXXXXXXXXXXXXX#~.#
O...XXXXXXXXXXXXXXX...O
#.~#XXXXXXXXXXXXXXX#~.#
#.~#XXXXXXXXXXXXXXX#~.#
#.~#XXXXXXXXXXXXXXX#~.#
#.~#XXXXXXXXXXXXXXX#~.#
#.~#XXXXXXXXXXXXXXX#~.#
#.~#XXXXXXXXXXXXXXX#~.#
#.~#XXXXXXXXXXXXXXX#~.#
#.~########.########~.#
#.~~~~~~~~~.~~~~~~~~~.#
#.....................#
###########O###########
""",use_prob=0.1,self_only_properties={TP_WET:1}))


basic_templates.append(Template("""
###########O###########
##...#.........#......#
#.......#.........#...#
#..########.########..#
#.##XXXXXXXXXXXXXXX#..#
#..#XXXXXXXXXXXXXXX#.##
#..#XXXXXXXXXXXXXXX#..#
#..#XXXXXXXXXXXXXXX#..#
##.#XXXXXXXXXXXXXXX##.#
#..#XXXXXXXXXXXXXXX#..#
#..#XXXXXXXXXXXXXXX#..#
O..#XXXXXXXXXXXXXXX#..O
#..#XXXXXXXXXXXXXXX#..#
#..#XXXXXXXXXXXXXXX#..#
#..#XXXXXXXXXXXXXXX##.#
#.##XXXXXXXXXXXXXXX#..#
#..#XXXXXXXXXXXXXXX#..#
#..#XXXXXXXXXXXXXXX#.##
##.#XXXXXXXXXXXXXXX#..#
#..########.########..#
#.......#......#......#
##...#............#...#
###########O###########
""",use_prob=0.1))


basic_templates.append(Template("""
###########O###########
#.....................#
#.....................#
#..########.########..#
#..#XXXXXXXXXXXXXXX#..#
#..#XXXXXXXXXXXXXXX#..#
#..#XXXXXXXXXXXXXXX#..#
#..#XXXXXXXXXXXXXXX#..#
#..#XXXXXXXXXXXXXXX#..#
#..#XXXXXXXXXXXXXXX#..#
#..#XXXXXXXXXXXXXXX#..#
O..#XXXXXXXXXXXXXXX#..O
#..#XXXXXXXXXXXXXXX#..#
#..#XXXXXXXXXXXXXXX#..#
#..#XXXXXXXXXXXXXXX#..#
#..#XXXXXXXXXXXXXXX#..#
#..#XXXXXXXXXXXXXXX#..#
#..#XXXXXXXXXXXXXXX#..#
#..#XXXXXXXXXXXXXXX#..#
#..########.########..#
#.....................#
#.....................#
###########O###########
""",use_prob=0.1))


basic_templates.append(Template("""
#######################
#######################
#######################
#######################
#######################
#######################
#######################
############XXXXXXXXX##
############XXXXXXXXX##
############XXXXXXXXX##
##XXXXXXXXX#XXXXXXXXX##
+.XXXXXXXXX.XXXXXXXXX##
##XXXXXXXXX#XXXXXXXXX##
############XXXXXXXXX##
############XXXXXXXXX##
############XXXXXXXXX##
#######################
#######################
#######################
#######################
#######################
#######################
#######################
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#############XXXXXXXXX#
#############XXXXXXXXX#
#############XXXXXXXXX#
##XXXXXXXXX##XXXXXXXXX#
+.XXXXXXXXX..XXXXXXXXXO
##XXXXXXXXX##XXXXXXXXX#
#############XXXXXXXXX#
#############XXXXXXXXX#
#############XXXXXXXXX#
#######################
#######################
#######################
#######################
#######################
#######################
#######################
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#######################
#######################
#XXXXX####XXXXXXXXX####
#XXXXX##..XXXXXXXXX####
#XXXXX##.#XXXXXXXXX####
#XXXXX##.##############
#XXXXX##.##############
###.####.####XXXXXXXXX#
###..###.####XXXXXXXXX#
####.###.####XXXXXXXXX#
##XXXXXXXXX##XXXXXXXXX#
+.XXXXXXXXX..XXXXXXXXXO
##XXXXXXXXX##XXXXXXXXX#
####.###.####XXXXXXXXX#
###..###.####XXXXXXXXX#
###.####.####XXXXXXXXX#
#XXXXX##.##############
#XXXXX##.##############
#XXXXX##.#XXXXXXXXX####
#XXXXX##..XXXXXXXXX####
#XXXXX####XXXXXXXXX####
#######################
#######################
""",use_prob=0.3))


basic_templates.append(Template("""
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#XXXXXXXXXXXXXXX#######
#XXXXXXXXXXXXXXX#######
+XXXXXXXXXXXXXXX#######
#XXXXXXXXXXXXXXX#######
#XXXXXXXXXXXXXXX#######
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
""",use_prob=0.5,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#######################
#######################
#######################
#######################
#XXXXXXXXXXXXXXX#######
#XXXXXXXXXXXXXXX#######
#XXXXXXXXXXXXXXX#######
#XXXXXXXXXXXXXXX#######
#XXXXXXXXXXXXXXX#######
#XXXXXXXXXXXXXXX#######
#XXXXXXXXXXXXXXX#######
+XXXXXXXXXXXXXXX#######
#XXXXXXXXXXXXXXX#######
#XXXXXXXXXXXXXXX#######
#XXXXXXXXXXXXXXX#######
#XXXXXXXXXXXXXXX#######
#XXXXXXXXXXXXXXX#######
#XXXXXXXXXXXXXXX#######
#XXXXXXXXXXXXXXX#######
#######################
#######################
#######################
#######################
""",use_prob=0.5,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###########+###########
###########.###########
###########.###########
###########.###########
###########.###########
###########.###########
###########.###########
#XXXXXXXXX#.#XXXXXXXXX#
#XXXXXXXXX#.#XXXXXXXXX#
#XXXXXXXXX#.#XXXXXXXXX#
#XXXXXXXXX#.#XXXXXXXXX#
OXXXXXXXXX...XXXXXXXXXO
#XXXXXXXXX#.#XXXXXXXXX#
#XXXXXXXXX#.#XXXXXXXXX#
#XXXXXXXXX#.#XXXXXXXXX#
#XXXXXXXXX#.#XXXXXXXXX#
###########.###########
###########.###########
###########.###########
###########.###########
###########.###########
###########.###########
###########+###########
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#XXXXXXXXX###XXXXXXXXX#
#XXXXXXXXX###XXXXXXXXX#
#XXXXXXXXX###XXXXXXXXX#
#XXXXXXXXX###XXXXXXXXX#
OXXXXXXXXX...XXXXXXXXXO
#XXXXXXXXX###XXXXXXXXX#
#XXXXXXXXX###XXXXXXXXX#
#XXXXXXXXX###XXXXXXXXX#
#XXXXXXXXX###XXXXXXXXX#
#####.###########.#####
#####.###########.#####
#####.###########.#####
#####.............#####
###########.###########
###########.###########
###########+###########
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#######################
#######################
#######################
#######################
#######################
#######################
#######################
##XXXXXXXXX#XXXXXXXXX##
##XXXXXXXXX#XXXXXXXXX##
##XXXXXXXXX#XXXXXXXXX##
##XXXXXXXXX#XXXXXXXXX##
+.XXXXXXXXX.XXXXXXXXX.+
##XXXXXXXXX#XXXXXXXXX##
##XXXXXXXXX#XXXXXXXXX##
##XXXXXXXXX#XXXXXXXXX##
##XXXXXXXXX#XXXXXXXXX##
#######################
#######################
#######################
#######################
#######################
#######################
#######################
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#######################
#######################
#######################
#######################
#####XXXXX###XXXXX#####
#####XXXXX###XXXXX#####
#####XXXXX###XXXXX#####
#####XXXXX###XXXXX#####
##...XXXXX...XXXXX...##
##.##XXXXX###XXXXX##.##
##.##XXXXX###XXXXX##.##
+..##XXXXX###XXXXX##..+
##.##XXXXX###XXXXX##.##
##.##XXXXX###XXXXX##.##
##...XXXXX...XXXXX...##
#####XXXXX###XXXXX#####
#####XXXXX###XXXXX#####
#####XXXXX###XXXXX#####
#####XXXXX###XXXXX#####
#######################
#######################
#######################
#######################
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#######################
#######XXXXXXXXX#######
#####..XXXXXXXXX..#####
#####.#XXXXXXXXX#.#####
#####.###########.#####
#####..#########..#####
######.#########.######
##XXXXXXXXX#XXXXXXXXX##
##XXXXXXXXX#XXXXXXXXX##
##XXXXXXXXX#XXXXXXXXX##
##XXXXXXXXX#XXXXXXXXX##
+.XXXXXXXXX.XXXXXXXXX.+
##XXXXXXXXX#XXXXXXXXX##
##XXXXXXXXX#XXXXXXXXX##
##XXXXXXXXX#XXXXXXXXX##
##XXXXXXXXX#XXXXXXXXX##
#######################
#######################
#######################
#######################
#######################
#######################
#######################
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#######################
#######################
#######################
#######################
#######################
##XXXXXXXXX############
##XXXXXXXXX############
##XXXXXXXXX#XXXXXXXXX##
####.###.###XXXXXXXXX##
####.###.###XXXXXXXXX##
##XXXXXXXXX#XXXXXXXXX##
+.XXXXXXXXX.XXXXXXXXX##
##XXXXXXXXX#XXXXXXXXX##
####.###.###XXXXXXXXX##
####.###.###XXXXXXXXX##
##XXXXXXXXX#XXXXXXXXX##
##XXXXXXXXX############
##XXXXXXXXX############
#######################
#######################
#######################
#######################
#######################
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#######################
##############XXXXX####
##############XXXXX####
##############XXXXX####
##############XXXXX####
##XXXXXXXXX###XXXXX####
##XXXXXXXXX#####.######
##XXXXXXXXX#XXXXXXXXX##
####.###.###XXXXXXXXX##
####.###.###XXXXXXXXX##
##XXXXXXXXX#XXXXXXXXX##
+.XXXXXXXXX.XXXXXXXXX##
##XXXXXXXXX#XXXXXXXXX##
####.###.###XXXXXXXXX##
####.###.###XXXXXXXXX##
##XXXXXXXXX#XXXXXXXXX##
##XXXXXXXXX#####.######
##XXXXXXXXX###XXXXX####
##############XXXXX####
##############XXXXX####
##############XXXXX####
##############XXXXX####
#######################
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#######################
#######################
#######################
#######################
#######################
#######################
##############......###
###########..........##
#######..............##
#####................##
##....................#
+.....................#
##....................#
#####................##
#######..............##
###########..........##
##############......###
#######################
#######################
#######################
#######################
#######################
#######################
""",use_prob=0.3,self_only_properties={TP_ORGANIC:1,TP_OPEN:1},inheritable_properties={TP_WANT_ENCOUNTER:1}))


basic_templates.append(Template("""
#######################
#######################
#######################
#######################
#######################
#######################
##############......###
###########..........##
#######.......~~~~...##
#####........~~~~~~..##
##...........~~~~~~~..#
+...........~~~~~~~~..#
##..........~~~~~~~~..#
#####........~~~~~~~.##
#######.......~~~~~..##
###########.....~~...##
##############......###
#######################
#######################
#######################
#######################
#######################
#######################
""",use_prob=0.3,self_only_properties={TP_ORGANIC:1,TP_WET:1,TP_OPEN:1}))


basic_templates.append(Template("""
#######################
#######################
#######################
#######################
#######################
#############...#######
##########........#####
#########...........###
########............###
########.............##
########.............##
+..######............##
#..######............##
##..#####............##
##...###............###
###.......###......####
####.....######..######
#######################
#######################
#######################
#######################
#######################
#######################
""",use_prob=0.3,self_only_properties={TP_ORGANIC:1,TP_OPEN:1}))


basic_templates.append(Template("""
#######################
#######################
##############....#####
###########.........###
#########...........###
########.............##
######...............##
#####................##
###..................##
##....................#
##....................#
O.....................#
##....................#
##....................#
###..................##
#####................##
######...............##
#######..............##
#########...........###
############........###
##############....#####
#######################
#######################
""",use_prob=0.3,self_only_properties={TP_ORGANIC:1},inheritable_properties={TP_WANT_ENCOUNTER:1}))


basic_templates.append(Template("""
#######################
#################...###
#################....##
#####.........#......##
##..................###
##......###.......#####
##############....#####
############......#####
#########.........#####
####...........########
##..............#######
+.......###......######
##...#########....#####
########...###....#####
######...............##
####..........##.....##
####....###############
####...#########...####
##......######.....####
##.................####
#####............######
#######################
#######################
""",use_prob=0.3,self_only_properties={TP_ORGANIC:1}))


basic_templates.append(Template("""
#######################
#######################
###########..##########
####..#####...#########
####...#####...########
#####...#####....######
######...#####....#####
#######...######...####
########...######...###
#########...#####.....#
######................#
+.....................#
#######...............#
#########...#####.....#
########...#####...####
#######...#####...#####
######...#####...######
#####...#####...#######
#####..#####...########
###########...#########
###########..##########
#######################
#######################
""",use_prob=0.2,inheritable_properties={TP_WANT_ENCOUNTER:1}))


basic_templates.append(Template("""
#######################
###########XXXXXXXXX###
###########XXXXXXXXX###
###########XXXXXXXXX###
###########XXXXXXXXX###
###########XXXXXXXXX###
###########XXXXXXXXX###
###########XXXXXXXXX###
###########XXXXXXXXX###
###########XXXXXXXXX###
#XXXXXXXXX#XXXXXXXXX###
+XXXXXXXXX.XXXXXXXXX###
#XXXXXXXXX#XXXXXXXXX###
###########XXXXXXXXX###
###########XXXXXXXXX###
###########XXXXXXXXX###
###########XXXXXXXXX###
###########XXXXXXXXX###
###########XXXXXXXXX###
###########XXXXXXXXX###
###########XXXXXXXXX###
###########XXXXXXXXX###
#######################
""",use_prob=0.7,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#######################
#######################
#######################
#######################
######XXXXXXXXXXXXXXX##
######XXXXXXXXXXXXXXX##
######XXXXXXXXXXXXXXX##
######XXXXXXXXXXXXXXX##
######XXXXXXXXXXXXXXX##
######XXXXXXXXXXXXXXX##
######XXXXXXXXXXXXXXX##
+.....XXXXXXXXXXXXXXX##
######XXXXXXXXXXXXXXX##
######XXXXXXXXXXXXXXX##
######XXXXXXXXXXXXXXX##
######XXXXXXXXXXXXXXX##
######XXXXXXXXXXXXXXX##
######XXXXXXXXXXXXXXX##
######XXXXXXXXXXXXXXX##
#######################
#######################
#######################
#######################
""",use_prob=0.6,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###########+###########
###########.###########
###.........###########
###.###################
###.###XXXXXXXXXXXXXXX#
###.###XXXXXXXXXXXXXXX#
###.###XXXXXXXXXXXXXXX#
###.###XXXXXXXXXXXXXXX#
###.###XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
OXXXXX.XXXXXXXXXXXXXXXO
#XXXXX#XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
###.###XXXXXXXXXXXXXXX#
###.###XXXXXXXXXXXXXXX#
###.###XXXXXXXXXXXXXXX#
###.###XXXXXXXXXXXXXXX#
###.###XXXXXXXXXXXXXXX#
###.###################
###.........###########
###########.###########
###########+###########
""",use_prob=0.4,self_only_properties={TP_NO_ORGANIC_SUBAREAS:1,TP_CLASSIC:1}))


basic_templates.append(Template("""
###########+###########
###########.###########
#####.......###########
#####.#################
#####.###########XXXXX#
#####.###########XXXXX#
#####.###########XXXXX#
#XXXXXXXXX#######XXXXX#
#XXXXXXXXX##.....XXXXX#
#XXXXXXXXX##.####XXXXX#
#XXXXXXXXX##.####XXXXX#
OXXXXXXXXX...####XXXXXO
#XXXXXXXXX##.####XXXXX#
#XXXXXXXXX##.####XXXXX#
#XXXXXXXXX##.....XXXXX#
#XXXXXXXXX#######XXXXX#
#####.###########XXXXX#
#####.###########XXXXX#
#####.###########XXXXX#
#####.#################
#####.......###########
###########.###########
###########+###########
""",use_prob=0.4,self_only_properties={TP_NO_ORGANIC_SUBAREAS:1,TP_CLASSIC:1}))


basic_templates.append(Template("""
###########+###########
#MMMMMMMMMMMMMMM#######
#MMMMMMMMMMMMMMM#######
#MMMMMMMMMMMMMMM#######
#MMMMMMMMMMMMMMM#XXXXX#
#MMMMMMMMMMMMMMM#XXXXX#
#####.###########XXXXX#
#XXXXXXXXX#MMMMM#XXXXX#
#XXXXXXXXX#MMMMM.XXXXX#
#XXXXXXXXX#MMMMM#XXXXX#
#XXXXXXXXX#MMMMM#XXXXX#
OXXXXXXXXX.MMMMM#XXXXXO
#XXXXXXXXX#MMMMM#XXXXX#
#XXXXXXXXX#MMMMM#XXXXX#
#XXXXXXXXX#MMMMM.XXXXX#
#XXXXXXXXX#MMMMM#XXXXX#
#####.###########XXXXX#
#MMMMMMMMMMMMMMM#XXXXX#
#MMMMMMMMMMMMMMM#XXXXX#
#MMMMMMMMMMMMMMM#######
#MMMMMMMMMMMMMMM#######
#MMMMMMMMMMMMMMM#######
###########+###########
""",use_prob=0.4,self_only_properties={TP_NO_ORGANIC_SUBAREAS:1,TP_MAZY:1}))


basic_templates.append(Template("""
###########+###########
###########.###########
###............########
###.##########.########
###.###XXXXXXXXXXXXXXX#
###.###XXXXXXXXXXXXXXX#
###.###XXXXXXXXXXXXXXX#
###.###XXXXXXXXXXXXXXX#
###.###XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
OXXXXX.XXXXXXXXXXXXXXXO
#XXXXX#XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
###.###XXXXXXXXXXXXXXX#
###.###XXXXXXXXXXXXXXX#
###.###XXXXXXXXXXXXXXX#
###.###XXXXXXXXXXXXXXX#
###.###XXXXXXXXXXXXXXX#
###.##########.########
###............########
###########.###########
###########+###########
""",use_prob=0.4,self_only_properties={TP_NO_ORGANIC_SUBAREAS:1,TP_CLASSIC:1}))


basic_templates.append(Template("""
###########+###########
###########.###########
###########.###########
###########.###########
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
+...XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
#######################
#######################
#######################
#######################
""",use_prob=0.8,self_only_properties={TP_NO_ORGANIC_SUBAREAS:1,TP_CLASSIC:1}))


basic_templates.append(Template("""
###########+###########
###########.###########
##########XXX##########
##########XXX..########
#XXXXX####XXX#.########
#XXXXX########.########
#XXXXX########.########
#XXXXX#XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
+XXXXX#XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
#XXXXX.XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
#######XXXXXXXXXXXXXXX#
#######XXXXXXXXXXXXXXX#
#######XXXXXXXXXXXXXXX#
#######################
""",use_prob=0.3,self_only_properties={TP_NO_ORGANIC_SUBAREAS:1,TP_CLASSIC:1}))


basic_templates.append(Template("""
###########+###########
###########.###########
##########XXX##########
##########XXX..########
##########XXX#.########
##############.########
##############.########
#######XXXXXXXXXXXXXXX#
#######XXXXXXXXXXXXXXX#
#######XXXXXXXXXXXXXXX#
##XXX##XXXXXXXXXXXXXXX#
+.XXX##XXXXXXXXXXXXXXX#
##XXX##XXXXXXXXXXXXXXX#
###.###XXXXXXXXXXXXXXX#
###....XXXXXXXXXXXXXXX#
#######XXXXXXXXXXXXXXX#
#######XXXXXXXXXXXXXXX#
#######XXXXXXXXXXXXXXX#
#######XXXXXXXXXXXXXXX#
#######XXXXXXXXXXXXXXX#
#######XXXXXXXXXXXXXXX#
#######XXXXXXXXXXXXXXX#
#######################
""",use_prob=0.3,self_only_properties={TP_NO_ORGANIC_SUBAREAS:1,TP_CLASSIC:1}))


basic_templates.append(Template("""
###########+###########
#MMMMM#MMMMMMMMMMMMMMM#
#MMMMM#MMMMMMMMMMMMMMM#
#MMMMM#MMMMMMMMMMMMMMM#
#MMMMM#MMMMMMMMMMMMMMM#
#MMMMM.MMMMMMMMMMMMMMM#
#MMMMM########.########
#MMMMM#XXXXXXXXXXXXXXX#
#MMMMM#XXXXXXXXXXXXXXX#
#MMMMM#XXXXXXXXXXXXXXX#
#MMMMM#XXXXXXXXXXXXXXX#
+MMMMM#XXXXXXXXXXXXXXX#
#MMMMM#XXXXXXXXXXXXXXX#
#MMMMM#XXXXXXXXXXXXXXX#
#MMMMM.XXXXXXXXXXXXXXX#
#MMMMM#XXXXXXXXXXXXXXX#
#MMMMM#XXXXXXXXXXXXXXX#
#MMMMM#XXXXXXXXXXXXXXX#
#MMMMM#XXXXXXXXXXXXXXX#
#MMMMM#XXXXXXXXXXXXXXX#
#MMMMM#XXXXXXXXXXXXXXX#
#MMMMM#XXXXXXXXXXXXXXX#
#######################
""",use_prob=0.3,self_only_properties={TP_MAZY:1}))


basic_templates.append(Template("""
#######################
#######################
#######################
#######################
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
+...XXXXXXXXXXXXXXX...+
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
#######################
#######################
#######################
#######################
""",use_prob=0.8,self_only_properties={TP_NO_ORGANIC_SUBAREAS:1,TP_CLASSIC:1}))


basic_templates.append(Template("""
#######################
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
##..XXXXXXXXXXXXXXX..##
##.#XXXXXXXXXXXXXXX#.##
##.#XXXXXXXXXXXXXXX#.##
+..#XXXXXXXXXXXXXXX#..+
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
###########.###########
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
###########O###########
""",use_prob=0.4,self_only_properties={TP_NO_ORGANIC_SUBAREAS:1,TP_CLASSIC:1}))


basic_templates.append(Template("""
###########O###########
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
##..XXXXXXXXXXXXXXX..##
##.#XXXXXXXXXXXXXXX#.##
##.#XXXXXXXXXXXXXXX#.##
+..#XXXXXXXXXXXXXXX#..+
##.#XXXXXXXXXXXXXXX#.##
##.#XXXXXXXXXXXXXXX#.##
##.#XXXXXXXXXXXXXXX#.##
##.#XXXXXXXXXXXXXXX#.##
##.########.########.##
##.#XXXXXXXXXXXXXXX#.##
##.#XXXXXXXXXXXXXXX#.##
##..XXXXXXXXXXXXXXX..##
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
###########O###########
""",use_prob=0.4,self_only_properties={TP_NO_ORGANIC_SUBAREAS:1,TP_CLASSIC:1}))


basic_templates.append(Template("""
#######################
##...................##
##.#################.##
##.#################.##
##.#XXXXXXXXXXXXXXX#.##
##.#XXXXXXXXXXXXXXX#.##
##.#XXXXXXXXXXXXXXX#.##
##.#XXXXXXXXXXXXXXX#.##
##.#XXXXXXXXXXXXXXX#.##
##.#XXXXXXXXXXXXXXX#.##
##.#XXXXXXXXXXXXXXX#.##
+...XXXXXXXXXXXXXXX...+
##.#XXXXXXXXXXXXXXX#.##
##.#XXXXXXXXXXXXXXX#.##
##.#XXXXXXXXXXXXXXX#.##
##.#XXXXXXXXXXXXXXX#.##
##.#XXXXXXXXXXXXXXX#.##
##.#XXXXXXXXXXXXXXX#.##
##.#XXXXXXXXXXXXXXX#.##
##.#################.##
##.#################.##
##...................##
#######################
""",use_prob=0.5,self_only_properties={TP_NO_ORGANIC_SUBAREAS:1}))


basic_templates.append(Template("""
#######################
#######################
#######################
#######################
#XXXXX#XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
+XXXXX.XXXXXXXXXXXXXXX+
#XXXXX#XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
#######################
#######################
#######################
#######################
""",use_prob=0.6,self_only_properties={TP_NO_ORGANIC_SUBAREAS:1,TP_CLASSIC:1}))


basic_templates.append(Template("""
#######################
#######################
###............########
###.##########.########
#XXXXX#XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
+XXXXX.XXXXXXXXXXXXXXX+
#XXXXX#XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
###.##########.########
###............########
#######################
#######################
""",use_prob=0.6,self_only_properties={TP_NO_ORGANIC_SUBAREAS:1,TP_CLASSIC:1}))


basic_templates.append(Template("""
###########+###########
###########.###########
###########.###########
###########.###########
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
+...XXXXXXXXXXXXXXX...+
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
#######################
#######################
#######################
#######################
""",use_prob=0.8,self_only_properties={TP_NO_ORGANIC_SUBAREAS:1,TP_CLASSIC:1}))


basic_templates.append(Template("""
###########O###########
###XXX####XXX####XXX###
###XXX####XXX####XXX###
###XXX####XXX####XXX###
###XXX####XXX####XXX###
###XXX####XXX####XXX###
###XXX####XXX####XXX###
###XXX####XXX####XXX###
###XXX####XXX####XXX###
###XXX####XXX####XXX###
####.######.######.####
+.....................+
####.######.######.####
###XXX####XXX####XXX###
###XXX####XXX####XXX###
###XXX####XXX####XXX###
###XXX####XXX####XXX###
###XXX####XXX####XXX###
###XXX####XXX####XXX###
###XXX####XXX####XXX###
###XXX####XXX####XXX###
###XXX####XXX####XXX###
###########O###########
""",use_prob=0.8))


basic_templates.append(Template("""
#######################
######XXXXXXXXX########
####..XXXXXXXXX########
####.#XXXXXXXXX########
####.##################
####.##################
####.#XXXXXXXXX########
####..XXXXXXXXX########
####.#XXXXXXXXX########
####.##################
####.##################
+.....................+
####.##################
####.##################
####.#XXXXXXXXX########
####..XXXXXXXXX########
####.#XXXXXXXXX########
####.##################
####.##################
####.#XXXXXXXXX########
####..XXXXXXXXX########
######XXXXXXXXX########
#######################
""",use_prob=0.8))


basic_templates.append(Template("""
#######################
#######XXXXXXXXX#######
#####..XXXXXXXXX..#####
#####.#XXXXXXXXX#.#####
#####.###.###.###.#####
#####.###.###.###.#####
#####.#XXXXXXXXX#.#####
#####..XXXXXXXXX..#####
#####.#XXXXXXXXX#.#####
#####.###.###.###.#####
#####.###.###.###.#####
+.....................+
#####.###.###.###.#####
#####.###.###.###.#####
#####.#XXXXXXXXX#.#####
#####..XXXXXXXXX..#####
#####.#XXXXXXXXX#.#####
#####.###.###.###.#####
#####.###.###.###.#####
#####.#XXXXXXXXX#.#####
#####..XXXXXXXXX..#####
#######XXXXXXXXX#######
#######################
""",use_prob=0.5))


basic_templates.append(Template("""
#######################
#######################
#######################
#######################
#######################
#######################
#######XXXXXXXXX#######
#####..XXXXXXXXX..#####
#####.#XXXXXXXXX#.#####
#####.###.###.###.#####
#####.###.###.###.#####
+.....................+
#####.###.###.###.#####
#####.###.###.###.#####
#####.#XXXXXXXXX#.#####
#####..XXXXXXXXX..#####
#######XXXXXXXXX#######
#######################
#######################
#######################
#######################
#######################
#######################
""",use_prob=0.3))


basic_templates.append(Template("""
###########O###########
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
###########.###########
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
+..#XXXXXXXXXXXXXXX#..+
##.#XXXXXXXXXXXXXXX#.##
##.#XXXXXXXXXXXXXXX#.##
##..XXXXXXXXXXXXXXX..##
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
#######################
""",use_prob=0.3,self_only_properties={TP_NO_ORGANIC_SUBAREAS:1,TP_CLASSIC:1}))


basic_templates.append(Template("""
###########O###########
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
###########.###########
###########.###########
#######XXXXXXXXX#######
#######XXXXXXXXX#######
#######XXXXXXXXX#######
+..####XXXXXXXXX####..+
##.....XXXXXXXXX.....##
#######XXXXXXXXX#######
#######XXXXXXXXX#######
#######XXXXXXXXX#######
#######XXXXXXXXX#######
#######################
#######################
#######################
#######################
#######################
#######################
""",use_prob=0.3,self_only_properties={TP_NO_ORGANIC_SUBAREAS:1,TP_CLASSIC:1}))


basic_templates.append(Template("""
###########O###########
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
###########.###########
#######XXXXXXXXX#######
#######XXXXXXXXX#######
#######XXXXXXXXX#######
#######XXXXXXXXX#######
+......XXXXXXXXX......+
#######XXXXXXXXX#######
#######XXXXXXXXX#######
#######XXXXXXXXX#######
#######XXXXXXXXX#######
###########.###########
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
###########O###########
""",use_prob=0.3,self_only_properties={TP_NO_ORGANIC_SUBAREAS:1,TP_CLASSIC:1}))


basic_templates.append(Template("""
###########+###########
#MMMMMMMMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMMMMMMMM#
#.#########.#########.#
#..#XXXXXXXXXXXXXXX#..#
##.#XXXXXXXXXXXXXXX#.##
##.#XXXXXXXXXXXXXXX#.##
##.#XXXXXXXXXXXXXXX#.##
+..#XXXXXXXXXXXXXXX#..+
##.#XXXXXXXXXXXXXXX#.##
##.#XXXXXXXXXXXXXXX#.##
##..XXXXXXXXXXXXXXX..##
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
#######################
""",use_prob=0.4,self_only_properties={TP_NO_ORGANIC_SUBAREAS:1,TP_MAZY:1}))


basic_templates.append(Template("""
#######################
#######################
#######################
#######################
#######XXXXXXXXXXXXXXX#
#######XXXXXXXXXXXXXXX#
#######XXXXXXXXXXXXXXX#
#######XXXXXXXXXXXXXXX#
#######XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
+XXXXX.XXXXXXXXXXXXXXXO
#XXXXX#XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
#######XXXXXXXXXXXXXXX#
#######XXXXXXXXXXXXXXX#
#######XXXXXXXXXXXXXXX#
#######XXXXXXXXXXXXXXX#
#######XXXXXXXXXXXXXXX#
#######################
#######################
#######################
#######################
""",use_prob=0.5,self_only_properties={TP_NO_ORGANIC_SUBAREAS:1,TP_CLASSIC:1}))


basic_templates.append(Template("""
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
+...........###########
###########.###########
###########.###########
###########.###########
###########.###########
###########.###########
###########.###########
###########.###########
###########.###########
###########.###########
###########.###########
###########+###########
""",use_prob=0.5,self_only_properties={TP_CLASSIC:1,TP_CORRIDOR:1}))


basic_templates.append(Template("""
#######################
#~~~~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~...~~~~~~~~#
#~~~~~~~~......~~~~~~~#
+...............~~~~~~#
#~~~~~~~........~~~~~~#
#~~~~~~~~......~~~~~~~#
#~~~~~~~~~~..~~~~~~~~~#
#~~~~~~~~~~.~~~~~~~~~~#
#~~~~~~~~~~.~~~~~~~~~~#
#~~~~~~~~~~.~~~~~~~~~~#
#~~~~~~~~~~.~~~~~~~~~~#
#~~~~~~~~~~.~~~~~~~~~~#
#~~~~~~~~~~.~~~~~~~~~~#
#~~~~~~~~~~.~~~~~~~~~~#
###########+###########
""",use_prob=0.3,inheritable_properties={TP_WET:1,TP_OPEN:1,TP_CORRIDOR:1}))


basic_templates.append(Template("""
#######################
#*********************#
#*********************#
#*********************#
#*********************#
#*********************#
#*********************#
#*********************#
#*********************#
#**********...********#
#********......*******#
+...............******#
#*******........******#
#********......*******#
#**********..*********#
#**********.**********#
#**********.**********#
#**********.**********#
#**********.**********#
#**********.**********#
#**********.**********#
#**********.**********#
###########+###########
""",use_prob=0.2,inheritable_properties={TP_FIERY:1,TP_OPEN:1,TP_CORRIDOR:1}))


basic_templates.append(Template("""
###########+###########
#*********...*********#
#*********************#
#**********.**********#
#*********************#
#*********.***********#
#*********************#
#**********.**********#
#*********************#
#*********.***********#
#*********************#
#*********.***********#
#*********************#
#**********.**********#
#*********************#
#*********.***********#
#*********************#
#**********.**********#
#*********************#
#*********.***********#
#*********************#
#*********...*********#
###########+###########
""",use_prob=0.1,inheritable_properties={TP_FIERY:1,TP_OPEN:1}))


basic_templates.append(Template("""
###########+###########
#~~~~~~~~~~.~~~~~~~~~~#
#~~~~~~~~~~.~~~~~~~~~~#
#~~~~~~~~~~.~~~~~~~~~~#
#~~~~~~~~~~.~~~~~~~~~~#
#~~~~~~~~~~.~~~~~~~~~~#
#~~~~~~~~~~.~~~~~~~~~~#
#~~~~~~~~~~.~~~~~~~~~~#
#~~~~~~~~~...~~~~~~~~~#
#~~~~~~~~.....~~~~~~~~#
#~~~~~~~.......~~~~~~~#
+..........!..........+
#~~~~~~~.......~~~~~~~#
#~~~~~~~~.....~~~~~~~~#
#~~~~~~~~~...~~~~~~~~~#
#~~~~~~~~~~.~~~~~~~~~~#
#~~~~~~~~~~.~~~~~~~~~~#
#~~~~~~~~~~.~~~~~~~~~~#
#~~~~~~~~~~.~~~~~~~~~~#
#~~~~~~~~~~.~~~~~~~~~~#
#~~~~~~~~~~.~~~~~~~~~~#
#~~~~~~~~~~.~~~~~~~~~~#
###########+###########
""",use_prob=0.3,inheritable_properties={TP_WET:1,TP_OPEN:1,TP_CORRIDOR:1}))


basic_templates.append(Template("""
#######################
#.....................#
#.###################.#
#.#MMMMMMMMMMMMMMMMM#.#
#.#MMMMMMMMMMMMMMMMM#.#
#.#MMMMMMMMMMMMMMMMM#.#
#.#MMMMMMMMMMMMMMMMM#.#
#.#MMMMMMMMMMMMMMMMM#.#
#.#MMMMMMMMMMMMMMMMM#.#
#.#MMMMMMMMMMMMMMMMM#.#
#.#MMMMMMMMMMMMMMMMM#.#
+..MMMMMMMMMMMMMMMMM#.#
###MMMMMMMMMMMMMMMMM#.#
###MMMMMMMMMMMMMMMMM#.#
###MMMMMMMMMMMMMMMMM#.#
###MMMMMMMMMMMMMMMMM#.#
###MMMMMMMMMMMMMMMMM#.#
###MMMMMMMMMMMMMMMMM#.#
###MMMMMMMMMMMMMMMMM#.#
###MMMMMMMMMMMMMMMMM#.#
###########.#########.#
###########...........#
###########+###########
""",use_prob=0.5,self_only_properties={TP_MAZY:1}))


basic_templates.append(Template("""
#######################
#XXXXXXXXX###XXXXXXXXX#
#XXXXXXXXX###XXXXXXXXX#
#XXXXXXXXX###XXXXXXXXX#
#XXXXXXXXX###XXXXXXXXX#
#XXXXXXXXX...XXXXXXXXX#
#XXXXXXXXX###XXXXXXXXX#
#XXXXXXXXX###XXXXXXXXX#
#XXXXXXXXX###XXXXXXXXX#
#XXXXXXXXX###XXXXXXXXX#
#####.###########.#####
+...........#####.#####
#####.#####.#####.#####
#XXXXXXXXX#.#XXXXXXXXX#
#XXXXXXXXX#.#XXXXXXXXX#
#XXXXXXXXX#.#XXXXXXXXX#
#XXXXXXXXX#.#XXXXXXXXX#
#XXXXXXXXX...XXXXXXXXX#
#XXXXXXXXX#.#XXXXXXXXX#
#XXXXXXXXX#.#XXXXXXXXX#
#XXXXXXXXX#.#XXXXXXXXX#
#XXXXXXXXX#.#XXXXXXXXX#
###########+###########
""",use_prob=0.3))


basic_templates.append(Template("""
#######################
#XXXXXXXXX###XXXXXXXXX#
#XXXXXXXXX###XXXXXXXXX#
#XXXXXXXXX###XXXXXXXXX#
#XXXXXXXXX###XXXXXXXXX#
#XXXXXXXXX...XXXXXXXXX#
#XXXXXXXXX###XXXXXXXXX#
#XXXXXXXXX###XXXXXXXXX#
#XXXXXXXXX###XXXXXXXXX#
#XXXXXXXXX###XXXXXXXXX#
#####.###########.#####
+.....###########.#####
#####.###########.#####
#XXXXXXXXX###XXXXXXXXX#
#XXXXXXXXX###XXXXXXXXX#
#XXXXXXXXX###XXXXXXXXX#
#XXXXXXXXX###XXXXXXXXX#
#XXXXXXXXX#..XXXXXXXXX#
#XXXXXXXXX#.#XXXXXXXXX#
#XXXXXXXXX#.#XXXXXXXXX#
#XXXXXXXXX#.#XXXXXXXXX#
#XXXXXXXXX#.#XXXXXXXXX#
###########+###########
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#######################
#############XXXXXXXXX#
#############XXXXXXXXX#
#############XXXXXXXXX#
#############XXXXXXXXX#
#######......XXXXXXXXX#
#######.#####XXXXXXXXX#
#######.#####XXXXXXXXX#
#######.#####XXXXXXXXX#
#######.#####XXXXXXXXX#
#######.#########.#####
+.#XXXXXXXXX#####.#####
#.#XXXXXXXXX#####.#####
#.#XXXXXXXXX#####.#####
#.#XXXXXXXXX#####.#####
#..XXXXXXXXX......#####
###XXXXXXXXX###########
###XXXXXXXXX###########
###XXXXXXXXX###########
###XXXXXXXXX###########
#######.###############
#######.....###########
###########+###########
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#######################
#############XXXXXXXXX#
#############XXXXXXXXX#
#####XXXXX###XXXXXXXXX#
#####XXXXX###XXXXXXXXX#
#####XXXXX...XXXXXXXXX#
#####XXXXX###XXXXXXXXX#
#####XXXXX###XXXXXXXXX#
#######.#####XXXXXXXXX#
#######.#####XXXXXXXXX#
#######.#########.#####
+.#XXXXXXXXX#####.#####
#.#XXXXXXXXX#####.#####
#.#XXXXXXXXX###XXXXX###
#.#XXXXXXXXX###XXXXX###
#..XXXXXXXXX...XXXXX###
###XXXXXXXXX###XXXXX###
###XXXXXXXXX###XXXXX###
###XXXXXXXXX###########
###XXXXXXXXX###########
#######.###############
#######.....###########
###########+###########
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#..........############
+...........###########
#............##########
#########....##########
##########...##########
##########...##########
##########...##########
##########...##########
##########...##########
##########...##########
##########...##########
##########...##########
###########+###########
""",use_prob=0.5,self_only_properties={TP_ORGANIC:1,TP_CORRIDOR:1}))


basic_templates.append(Template("""
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#..####################
+.........##..#########
#.....##.....##########
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
""",use_prob=0.5,self_only_properties={TP_ORGANIC:1}))


basic_templates.append(Template("""
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#.#####################
+...###################
#.....#################
###....################
#####..################
#####...###############
######...##############
#######..##############
#######...#############
########...############
#########...###########
##########...##########
###########+###########
""",use_prob=0.5,self_only_properties={TP_ORGANIC:1,TP_CORRIDOR:1}))


basic_templates.append(Template("""
#######################
#######################
########.........######
#####..............####
###......######.....###
##.....##########....##
#....#############...##
#...###########......##
#...########........###
#...####.........######
#...###......##########
+..###....#############
#..###...##############
#.####....#############
#######..........######
########...........####
################...####
################...####
###############....####
#############.....#####
###########......######
##########.....########
###########..##########
""",use_prob=0.3,self_only_properties={TP_ORGANIC:1,TP_CORRIDOR:1}))


basic_templates.append(Template("""
#######################
#.....................#
#.#########.#####.###.#
#.#XXXXX#XXXXX#XXXXX#.#
#.#XXXXX#XXXXX#XXXXX#.#
#..XXXXX#XXXXX#XXXXX..#
#.#XXXXX#XXXXX#XXXXX#.#
#.#XXXXX#XXXXX#XXXXX#.#
#.###################.#
#.#XXXXX#######XXXXX#.#
#.#XXXXX#######XXXXX#.#
+..XXXXX#######XXXXX..#
###XXXXX#######XXXXX#.#
###XXXXX#######XXXXX#.#
#####################.#
#########XXXXX#XXXXX#.#
#########XXXXX#XXXXX#.#
#########XXXXX#XXXXX..#
#########XXXXX#XXXXX#.#
#########XXXXX#XXXXX#.#
###########.#####.###.#
###########...........#
###########+###########
""",use_prob=0.5,child_only_properties={TP_NO_INTERIOR_WALLS:1,TP_WANT_ENCOUNTER:1},self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###########+###########
###########..##########
############.##########
############..#########
#############.#########
#############..########
##############.########
#######XXXXXXXXXXXXXXX#
#######XXXXXXXXXXXXXXX#
#######XXXXXXXXXXXXXXX#
#######XXXXXXXXXXXXXXX#
+.#####XXXXXXXXXXXXXXX#
#...###XXXXXXXXXXXXXXX#
###...#XXXXXXXXXXXXXXX#
#####..XXXXXXXXXXXXXXX#
#######XXXXXXXXXXXXXXX#
#######XXXXXXXXXXXXXXX#
#######XXXXXXXXXXXXXXX#
#######XXXXXXXXXXXXXXX#
#######XXXXXXXXXXXXXXX#
#######XXXXXXXXXXXXXXX#
#######XXXXXXXXXXXXXXX#
#######################
""",use_prob=0.3))


basic_templates.append(Template("""
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
+.....................+
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
""",use_prob=0.5,self_only_properties={TP_CLASSIC:1,TP_CORRIDOR:1}))


basic_templates.append(Template("""
#######################
#######################
#######################
#######################
#######################
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
########.#####.########
+.....................+
########.#####.########
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
#######################
#######################
#######################
#######################
#######################
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###########+###########
###########.###########
###########.###########
##...................##
##.########.########.##
##.#XXXXXXXXXXXXXXX#.##
##.#XXXXXXXXXXXXXXX#.##
##..XXXXXXXXXXXXXXX..##
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
########.#####.########
+.....................+
########.#####.########
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
##..XXXXXXXXXXXXXXX..##
##.#XXXXXXXXXXXXXXX#.##
##.#XXXXXXXXXXXXXXX#.##
##.########.########.##
##...................##
###########.###########
###########.###########
###########+###########
""",use_prob=0.1))


basic_templates.append(Template("""
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#.....................#
+.....................+
#.....................#
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
""",use_prob=0.5,self_only_properties={TP_CLASSIC:1,TP_CORRIDOR:1}))


basic_templates.append(Template("""
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#.....................#
+....!.....!.....!....+
#.....................#
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1,TP_CORRIDOR:1}))


basic_templates.append(Template("""
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#.....................#
+....:.....:.....:....+
#.....................#
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
""",use_prob=0.2,self_only_properties={TP_CLASSIC:1,TP_CORRIDOR:1}))


basic_templates.append(Template("""
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#.....................#
+..###....###....###..+
#.....................#
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
""",use_prob=0.3,self_only_properties={TP_CORRIDOR:1}))


basic_templates.append(Template("""
#######################
#######################
#######################
#######################
#######################
#######XXXXXXXXX#######
###....XXXXXXXXX....###
###.###XXXXXXXXX###.###
###.###############.###
###.###############.###
#.....#XXXXXXXXX#.....#
+......XXXXXXXXX......+
#.....#XXXXXXXXX#.....#
###.###############.###
###.###############.###
###.###XXXXXXXXX###.###
###....XXXXXXXXX....###
#######XXXXXXXXX#######
#######################
#######################
#######################
#######################
#######################
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#######################
########........#######
######............#####
#####.....#####...#####
#####...#######....####
#####..#########...####
#####..#########...####
#####..#########...####
####...########....####
###...########....#####
#.....######.....####.#
+....#####......####..+
#..#####......#####...#
######......#######...#
#####.....########...##
####....##########...##
####...##########...###
####....#######.....###
#####.....###......####
######...........######
########.....##########
#######################
#######################
""",use_prob=0.3,self_only_properties={TP_ORGANIC:1,TP_CORRIDOR:1}))


basic_templates.append(Template("""
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#############.......###
##########............#
+....##........####...+
#...........###########
###......##############
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
""",use_prob=0.2,self_only_properties={TP_ORGANIC:1,TP_CORRIDOR:1}))


basic_templates.append(Template("""
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
########..........#####
######..............###
###.......#######.....#
+......###########....O
#.....###########....##
##.......######.....###
#####..............####
##########......#######
#######################
#######################
#######################
#######################
#######################
#######################
#######################
""",use_prob=0.2,self_only_properties={TP_ORGANIC:1}))


basic_templates.append(Template("""
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#.....#XXXXXXXXX#.....#
+......XXXXXXXXX......+
#.....#XXXXXXXXX#.....#
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#######################
#######################
##XXXXX##XXXXX##XXXXX##
##XXXXX##XXXXX##XXXXX##
##XXXXX##XXXXX##XXXXX##
##XXXXX##XXXXX##XXXXX##
##XXXXX##XXXXX##XXXXX##
####.######.######.####
####.######.######.####
####.######.#####..####
#.....................#
+.....................+
#.....................#
####.######.######.####
####.######.######.####
####.######.######.####
##XXXXX##XXXXX##XXXXX##
##XXXXX##XXXXX##XXXXX##
##XXXXX##XXXXX##XXXXX##
##XXXXX##XXXXX##XXXXX##
##XXXXX##XXXXX##XXXXX##
#######################
#######################
""",use_prob=0.3,child_only_properties={TP_NO_INTERIOR_WALLS:1,TP_WANT_ENCOUNTER:1},self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
####XXXXXXXXXXXXXXX####
#..#XXXXXXXXXXXXXXX#..#
+...XXXXXXXXXXXXXXX...+
#..#XXXXXXXXXXXXXXX#..#
####XXXXXXXXXXXXXXX####
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#######################
#######################
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
##..XXXXXXXXXXXXXXX..##
##.#XXXXXXXXXXXXXXX#.##
##.#XXXXXXXXXXXXXXX#.##
##.#################.##
##.#################.##
##.#XXXXXXXXXXXXXXX#.##
#..#XXXXXXXXXXXXXXX#..#
+...XXXXXXXXXXXXXXX...+
#..#XXXXXXXXXXXXXXX#..#
##.#XXXXXXXXXXXXXXX#.##
##.#################.##
##.#################.##
##.#XXXXXXXXXXXXXXX#.##
##.#XXXXXXXXXXXXXXX#.##
##..XXXXXXXXXXXXXXX..##
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
#######################
#######################
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###########+###########
###########.###########
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
##..XXXXXXXXXXXXXXX..##
##.#XXXXXXXXXXXXXXX#.##
##.#XXXXXXXXXXXXXXX#.##
##.#####.#####.#####.##
##.#####.#####.#####.##
##.#XXXXXXXXXXXXXXX#.##
#..#XXXXXXXXXXXXXXX#..#
+...XXXXXXXXXXXXXXX...+
#..#XXXXXXXXXXXXXXX#..#
##.#XXXXXXXXXXXXXXX#.##
##.#####.#####.#####.##
##.#####.#####.#####.##
##.#XXXXXXXXXXXXXXX#.##
##.#XXXXXXXXXXXXXXX#.##
##..XXXXXXXXXXXXXXX..##
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
###########.###########
###########+###########
""",use_prob=0.3))


basic_templates.append(Template("""
#######################
#######################
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
##..XXXXXXXXXXXXXXX..##
##.#XXXXXXXXXXXXXXX#.##
##.#XXXXXXXXXXXXXXX#.##
##.#####.#####.#####.##
##.#####.#####.#####.##
##.#XXXXXXXXXXXXXXX#.##
#..#XXXXXXXXXXXXXXX#..#
+...XXXXXXXXXXXXXXX...+
#..#XXXXXXXXXXXXXXX#..#
##.#XXXXXXXXXXXXXXX#.##
##.#####.#####.#####.##
##.#####.#####.#####.##
##.#XXXXXXXXXXXXXXX#.##
##.#XXXXXXXXXXXXXXX#.##
##..XXXXXXXXXXXXXXX..##
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
#######################
#######################
""",use_prob=0.3))


basic_templates.append(Template("""
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
+.....................+
###########.###########
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
###########O###########
""",use_prob=0.3,self_only_properties={TP_NO_ORGANIC_SUBAREAS:1,TP_CLASSIC:1}))


basic_templates.append(Template("""
#######################
#MMMMMMMMMMMMM.MMMMMMM#
#MMMMMMMMMMMMM#MMMMMMM#
#MMMMMMMMMMMMM#MMMMMMM#
#MMMMMMMMMMMMM#MMMMMMM#
#MMMMMMMMMMMMM#MMMMMMM#
#MMMMMMMMMMMMM#MMMMMMM#
#MMMMMMMMMMMMM#MMMMMMM#
###########.###MMMMMMM#
#MMMMMMM#XXXXX#MMMMMMM#
#MMMMMMM#XXXXX#MMMMMMM#
OMMMMMMM#XXXXX#MMMMMMMO
#MMMMMMM#XXXXX#MMMMMMM#
#MMMMMMM#XXXXX#MMMMMMM#
#MMMMMMM#######.#######
#MMMMMMM.MMMMMMMMMMMMM#
#MMMMMMM#MMMMMMMMMMMMM#
#MMMMMMM#MMMMMMMMMMMMM#
#MMMMMMM#MMMMMMMMMMMMM#
#MMMMMMM#MMMMMMMMMMMMM#
#MMMMMMM#MMMMMMMMMMMMM#
#MMMMMMM#MMMMMMMMMMMMM#
###########O###########
""",use_prob=0.3,child_only_properties={TP_WANT_GOOD_ENCOUNTER:1},self_only_properties={TP_MAZY:1}))


basic_templates.append(Template("""
#######################
#XXXXXXXXX###XXXXXXXXX#
#XXXXXXXXX###XXXXXXXXX#
#XXXXXXXXX###XXXXXXXXX#
#XXXXXXXXX###XXXXXXXXX#
#XXXXXXXXX###XXXXXXXXX#
#XXXXXXXXX###XXXXXXXXX#
#XXXXXXXXX###XXXXXXXXX#
#XXXXXXXXX###XXXXXXXXX#
#XXXXXXXXX###XXXXXXXXX#
#XXXXXXXXX###XXXXXXXXX#
OXXXXXXXXX...XXXXXXXXXO
#XXXXXXXXX#.#XXXXXXXXX#
#XXXXXXXXX#.#XXXXXXXXX#
#XXXXXXXXX#.#XXXXXXXXX#
#XXXXXXXXX#.#XXXXXXXXX#
#XXXXXXXXX#.#XXXXXXXXX#
#XXXXXXXXX#.#XXXXXXXXX#
#XXXXXXXXX#.#XXXXXXXXX#
#XXXXXXXXX#.#XXXXXXXXX#
#XXXXXXXXX#.#XXXXXXXXX#
#XXXXXXXXX#.#XXXXXXXXX#
###########+###########
""",use_prob=0.5,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
+.....................+
#.....................#
##...................##
###.................###
####...............####
#####.............#####
######...........######
#######.........#######
########.......########
#########.....#########
##########...##########
###########+###########
""",use_prob=0.1,self_only_properties={TP_OPEN:1}))


basic_templates.append(Template("""
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
+.....................+
###########.###########
###########.###########
###########.###########
###########.###########
###########.###########
###########.###########
###########.###########
###########.###########
###########.###########
###########.###########
###########+###########
""",use_prob=0.5,self_only_properties={TP_CLASSIC:1,TP_CORRIDOR:1}))


basic_templates.append(Template("""
#######################
#######################
#####.............#####
#####.............#####
#####.............#####
#####.............#####
#####.............#####
#####.............#####
#####.............#####
#####.............#####
#####.............#####
+.###.............###.+
#.###.............###.#
#.###.............###.#
#.###.............###.#
#.###.............###.#
#.###.............###.#
#.###.............###.#
#.#########.#########.#
#.#########.#########.#
#.....................#
###########.###########
###########+###########
""",use_prob=0.2,inheritable_properties={TP_WANT_ENCOUNTER:1,TP_OPEN:1},self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#######################
#######################
#####.............#####
#####.............#####
#####..!.......!..#####
#####.............#####
#####.............#####
#####.............#####
#####.............#####
#####..!.......!..#####
#####.............#####
+.###.............###.+
#.###.............###.#
#.###.............###.#
#.###..!.......!..###.#
#.###.............###.#
#.###.............###.#
#.###.............###.#
#.#########.#########.#
#.#########.#########.#
#.....................#
###########.###########
###########+###########
""",use_prob=0.2,self_only_properties={TP_OPEN:1,TP_CLASSIC:1}))


basic_templates.append(Template("""
#######################
#######################
#######################
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
+.##XXXXXXXXXXXXXXX##.+
#.##XXXXXXXXXXXXXXX##.#
#.##XXXXXXXXXXXXXXX##.#
#.##XXXXXXXXXXXXXXX##.#
#.##XXXXXXXXXXXXXXX##.#
#.##XXXXXXXXXXXXXXX##.#
#.##XXXXXXXXXXXXXXX##.#
#.#########.#########.#
#.#########.#########.#
#.....................#
###########.###########
###########+###########
""",use_prob=0.3,self_only_properties={TP_NO_ORGANIC_SUBAREAS:1,TP_CLASSIC:1}))


basic_templates.append(Template("""
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#.....................#
+.....................+
#.....................#
##########...##########
##########...##########
##########...##########
##########...##########
##########...##########
##########...##########
##########...##########
##########...##########
##########...##########
###########+###########
""",use_prob=0.3,inheritable_properties={TP_CORRIDOR:1}))



basic_templates.append(Template("""
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
##......###############
+........###########..+
#..###....#########...#
########...#######...##
########...######....##
#######...#######...###
#######...######...####
######...######....####
######....####....#####
######.....#.....######
#######........########
##########...##########
###########O###########
""",use_prob=0.3,self_only_properties={TP_ORGANIC:1,TP_CORRIDOR:1}))


basic_templates.append(Template("""
#######################
#######################
#######################
#########.......#######
#######..........######
######....####....#####
#####...########..#####
#####...########..#####
####....#######....####
###....######.......###
#.....######...###....#
+....######...#####...O
#..########..#######..#
###########..#######..#
###########...#####...#
############...###...##
#############.......###
##############.....####
##############...######
#############....######
###########.....#######
##########.....########
###########+###########
""",use_prob=0.3,self_only_properties={TP_ORGANIC:1,TP_CORRIDOR:1}))


basic_templates.append(Template("""
#######################
#######################
###########...#########
#########........######
########..........#####
#######...........#####
#######............####
#######............####
#######............####
########..........#####
######..........#######
+..##....##....####...+
#......#####..###.....#
##.....######..#....###
#####...#####.....#####
######....##...########
########......#########
#########...###########
#########..############
#########..############
#########...###########
##########...##########
###########+###########
""",use_prob=0.2,self_only_properties={TP_ORGANIC:1}))


basic_templates.append(Template("""
#######################
#######################
###########...#########
#########........######
########...~~~....#####
#######...~~~~~...#####
#######..~~~~~~~...####
#######..~~~~~~~...####
#######...~~~~~....####
########....~~....#####
######..........#######
+..##....##....####...+
#......#####..###.....#
##.....######..#....###
#####...#####.....#####
######....##...########
########......#########
#########...###########
#########..############
#########..############
#########...###########
##########...##########
###########+###########
""",use_prob=0.2,self_only_properties={TP_ORGANIC:1,TP_WET:1}))


basic_templates.append(Template("""
###########+###########
##########..###########
##########..###########
##########..###########
#########...###########
########....###########
#######....############
#######...#############
######.....############
####........###########
#.......#....##########
+.....####....######..+
#..########....##.....#
############...#.....##
#############......####
#############....######
#############...#######
############...########
###########....########
##########....#########
##########...##########
##########..###########
###########+###########
""",use_prob=0.3,self_only_properties={TP_ORGANIC:1,TP_CORRIDOR:1}))


basic_templates.append(Template("""
###########+###########
##########..###########
##########..###########
##########...##########
#########.....#########
########.......########
########..##....#######
######....###....######
#####....#####....#####
####...#########...####
##....###########....##
+.....############....+
#.......###########...#
####......######.....##
#######....###.....####
########....#....######
#########...#...#######
##########.....########
###########...#########
###########...#########
##########...##########
##########..###########
###########+###########
""",use_prob=0.2,self_only_properties={TP_ORGANIC:1,TP_CORRIDOR:1}))


basic_templates.append(Template("""
###########+###########
##########..###########
##########..###########
##########...##########
###########..##########
###########..##########
###########..##########
##########...##########
#######.......#########
######..........#######
#...##..........#######
+.................##..+
###...................#
#####...........##...##
######..........#######
#######........########
#########....##########
##########..###########
##########...##########
##########...##########
###########..##########
###########..##########
###########+###########
""",use_prob=0.3,self_only_properties={TP_ORGANIC:1}))


basic_templates.append(Template("""
###########+###########
##########..###########
##########..###########
##########..###########
##########...##########
###########..##########
###########..##########
##########...##########
#######.......#########
######...~~~....#######
#...##...~~~~...#######
+......~~~~~~~....##..+
###....~~~~~~~........#
#####...~~~~~~..##...##
######...~~~~...#######
#######........########
#########....##########
##########..###########
##########...##########
##########...##########
###########..##########
###########..##########
###########+###########
""",use_prob=0.2,self_only_properties={TP_ORGANIC:1,TP_WET:1}))


basic_templates.append(Template("""
###########+###########
##########...##########
##########...##########
####..............#####
###................####
###...####...###...####
###..######.#####.#####
###..##XXXXXXXXXXXXXXX#
###..##XXXXXXXXXXXXXXX#
###..##XXXXXXXXXXXXXXX#
###...#XXXXXXXXXXXXXXX#
####...XXXXXXXXXXXXXXXO
###...#XXXXXXXXXXXXXXX#
###..##XXXXXXXXXXXXXXX#
###..##XXXXXXXXXXXXXXX#
###..##XXXXXXXXXXXXXXX#
###...#XXXXXXXXXXXXXXX#
###....XXXXXXXXXXXXXXX#
####..#XXXXXXXXXXXXXXX#
#######XXXXXXXXXXXXXXX#
#######XXXXXXXXXXXXXXX#
#######XXXXXXXXXXXXXXX#
###########O###########
""",use_prob=0.4))


basic_templates.append(Template("""
#######################
#######################
#####XXXXX###XXXXX#####
#####XXXXX###XXXXX#####
#####XXXXX###XXXXX#####
#####XXXXX###XXXXX#####
#####XXXXX...XXXXX#####
#####XXXXX###XXXXX#####
#####XXXXX###XXXXX#####
#####XXXXX###XXXXX#####
#####XXXXX###XXXXX#####
+.###XXXXX###XXXXX###.+
#.###XXXXX...XXXXX###.#
#.###XXXXX###XXXXX###.#
#.###XXXXX###XXXXX###.#
#.###XXXXX###XXXXX###.#
#.###XXXXX###XXXXX###.#
#.#####.#######.#####.#
#.#####.........#####.#
#.#########.#########.#
#.....................#
###########.###########
###########+###########
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###########+###########
###.................###
####...............####
#.###.............###.#
#..###...........###..#
#...###.........###...#
#....###.......###....#
#.....###.....###.....#
#......###...###......#
#.......##...##.......#
#.....................#
+.....................+
#.....................#
#.......##...##.......#
#......###...###......#
#.....###.....###.....#
#....###.......###....#
#...###.........###...#
#..###...........###..#
#.###.............###.#
####...............####
###.................###
###########+###########
""",use_prob=0.4,inheritable_properties={TP_WANT_ENCOUNTER:1,TP_OPEN:1}))


basic_templates.append(Template("""
###########O###########
#MMMMMMMMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMMMMMMMM#
OMMMMMMMMMMMMMMMMMMMMMO
#MMMMMMMMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMMMMMMMM#
###########O###########
""",use_prob=0.5,self_only_properties={TP_MAZY:1}))


basic_templates.append(Template("""
###########O###########
#BBBBBBBBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBBBBBBBB#
OBBBBBBBBBBBBBBBBBBBBBO
#BBBBBBBBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBBBBBBBB#
###########O###########
""",use_prob=0.2,self_only_properties={TP_OPEN:1}))


basic_templates.append(Template("""
###########O###########
#MMMMMMMMMMM#MMMMMMMMM#
#MMMMMMMMMMM#MMMMMMMMM#
#MMMMMMMMMMM#MMMMMMMMM#
#MMMMMMMMMMM#MMMMMMMMM#
#MMMMMMMMMMM#MMMMMMMMM#
#MMMMMMMMMMM#MMMMMMMMM#
#MMMMMMMMMMM#MMMMMMMMM#
#MMMMMMMMMMM#MMMMMMMMM#
#MMMMMMMMMMM.MMMMMMMMM#
#########.###MMMMMMMMM#
OMMMMMMMMM###MMMMMMMMMO
#MMMMMMMMM###.#########
#MMMMMMMMM.MMMMMMMMMMM#
#MMMMMMMMM#MMMMMMMMMMM#
#MMMMMMMMM#MMMMMMMMMMM#
#MMMMMMMMM#MMMMMMMMMMM#
#MMMMMMMMM#MMMMMMMMMMM#
#MMMMMMMMM#MMMMMMMMMMM#
#MMMMMMMMM#MMMMMMMMMMM#
#MMMMMMMMM#MMMMMMMMMMM#
#MMMMMMMMM#MMMMMMMMMMM#
###########O###########
""",use_prob=0.2,self_only_properties={TP_MAZY:1}))


basic_templates.append(Template("""
###########O###########
#MMMMMMMMMMMMM#MMMMMMM#
#MMMMMMMMMMMMM#MMMMMMM#
#MMMMMMMMMMMMM#MMMMMMM#
#MMMMMMMMMMMMM#MMMMMMM#
#MMMMMMMMMMMMM#MMMMMMM#
#MMMMMMMMMMMMM#MMMMMMM#
#MMMMMMMMMMMMM.MMMMMMM#
#######.#######MMMMMMM#
#MMMMMMM#######MMMMMMM#
#MMMMMMM#######MMMMMMM#
OMMMMMMM#######MMMMMMMO
#MMMMMMM#######MMMMMMM#
#MMMMMMM#######MMMMMMM#
#MMMMMMM#######.#######
#MMMMMMM.MMMMMMMMMMMMM#
#MMMMMMM#MMMMMMMMMMMMM#
#MMMMMMM#MMMMMMMMMMMMM#
#MMMMMMM#MMMMMMMMMMMMM#
#MMMMMMM#MMMMMMMMMMMMM#
#MMMMMMM#MMMMMMMMMMMMM#
#MMMMMMM#MMMMMMMMMMMMM#
###########O###########
""",use_prob=0.2,self_only_properties={TP_MAZY:1}))


basic_templates.append(Template("""
###########O###########
#.....#.........#.....#
#.....#.........#.....#
#.....#.........#.....#
#.....#.........#.....#
#.....#.........#.....#
#.....#.........#.....#
#.....#.........#.....#
#.....#.........#.....#
#.....#.........#.....#
#.....................#
O.....................O
#.....................#
#.....#.........#.....#
#.....#.........#.....#
#.....#.........#.....#
#.....#.........#.....#
#.....#.........#.....#
#.....#.........#.....#
#.....#.........#.....#
#.....#.........#.....#
#.....#.........#.....#
###########O###########
""",use_prob=0.2,inheritable_properties={TP_WANT_ENCOUNTER:1,TP_OPEN:1}))


basic_templates.append(Template("""
###########+###########
###########.###########
###########.###########
###########.###########
###########.###########
###########.###########
###########.###########
###########.###########
###########.###########
###########.###########
###########.###########
+.....................+
###########.###########
###########.###########
###########.###########
###########.###########
###########.###########
###########.###########
###########.###########
###########.###########
###########.###########
###########.###########
###########+###########
""",use_prob=0.5,self_only_properties={TP_CLASSIC:1,TP_CORRIDOR:1}))


basic_templates.append(Template("""
###########O###########
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
###########.###########
O.....................O
###########.###########
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
###########O###########
""",use_prob=0.8,inheritable_properties={TP_NO_ORGANIC_SUBAREAS:1},self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#######################
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
###########.###########
+.....................+
###########.###########
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#######################
""",use_prob=0.3,inheritable_properties={TP_NO_ORGANIC_SUBAREAS:1},self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###########+###########
###########.###########
###########.###########
###########.###########
#########.....#########
#######.........#######
######...........######
#####.............#####
#####.............#####
####...............####
####...............####
+.....................+
####...............####
####...............####
#####.............#####
#####.............#####
######...........######
#######.........#######
#########.....#########
###########.###########
###########.###########
###########.###########
###########+###########
""",use_prob=0.5,inheritable_properties={TP_WANT_ENCOUNTER:1,TP_OPEN:1}))


basic_templates.append(Template("""
###########+###########
###########.###########
###########.###########
###########.###########
#########.....#########
#######.........#######
######.....#.....######
#####....#####....#####
#####...#######...#####
####...#########...####
####...#########...####
+.....###########.....+
####...#########...####
####...#########...####
#####...#######...#####
#####....#####....#####
######.....#.....######
#######.........#######
#########.....#########
###########.###########
###########.###########
###########.###########
###########+###########
""",use_prob=0.3))


basic_templates.append(Template("""
###########O###########
#.....................#
#.....................#
#..########.########..#
#..#...............#..#
#..#...............#..#
#..#..#####.#####..#..#
#..#..#.........#..#..#
#..#..#.........#..#..#
#..#..#..##.##..#..#..#
#..#..#..#...#..#..#..#
O.....................O
#..#..#..#...#..#..#..#
#..#..#..##.##..#..#..#
#..#..#.........#..#..#
#..#..#.........#..#..#
#..#..#####.#####..#..#
#..#...............#..#
#..#...............#..#
#..########.########..#
#.....................#
#.....................#
###########O###########
""",use_prob=0.15,self_only_properties={TP_OPEN:1,TP_MAZY:1}))


basic_templates.append(Template("""
###########O###########
#.....................#
#.....................#
#..#################..#
#..#...............#..#
#..#...............#..#
#..#..#####.#####..#..#
#..#..#.........#..#..#
#..#..#.........#..#..#
#..#..#..#####..#..#..#
#..#..#..#...#..#..#..#
O.....#.........#.....O
#..#..#..#...#..#..#..#
#..#..#..#####..#..#..#
#..#..#.........#..#..#
#..#..#.........#..#..#
#..#..#####.#####..#..#
#..#...............#..#
#..#...............#..#
#..#################..#
#.....................#
#.....................#
###########O###########
""",use_prob=0.15,self_only_properties={TP_OPEN:1,TP_MAZY:1}))


basic_templates.append(Template("""
###########O###########
#.#...................#
#.#.#################.#
#.#.#...............#.#
#.#.#.#############.#.#
#.#.#.#...........#.#.#
#.#.#.#.#########.#.#.#
#.#.#.#.#.......#.#.#.#
#.#.#.#.#.#####.#.#.#.#
#.#.#.#.#.#...#.#.#.#.#
#.#.#.#.#.#.#.#.#.#.#.#
+.#.#.#.#.#.#.#.#.#.#.+
#.#.#.#.#.#.#.#.#.#.#.#
#.#.#.#.#...#.#.#.#.#.#
#.#.#.#.#####.#.#.#.#.#
#.#.#.#.......#.#.#.#.#
#.#.#.#########.#.#.#.#
#.#.#...........#.#.#.#
#.#.#############.#.#.#
#.#...............#.#.#
#.#################.#.#
#...................#.#
###########O###########
""",use_prob=0.15,self_only_properties={TP_MAZY:1}))


basic_templates.append(Template("""
###########O###########
#.....................#
#.................##..#
#..##.............##..#
#..##.....##..........#
#.........##..........#
#.................##..#
#.................##..#
#....##.....##........#
#....##.....##........#
#.....................#
O........##......##...O
#........##......##...#
#...##................#
#...##......##........#
#...........##....##..#
#.##..............##..#
#.##.....##...........#
#........##....##.....#
#....##........##.....#
#....##...............#
#.....................#
###########O###########
""",use_prob=0.2,inheritable_properties={TP_WANT_ENCOUNTER:1,TP_OPEN:1}))


basic_templates.append(Template("""
###########+###########
##########...##########
##########...##########
##########...##########
##########...##########
##########...##########
##########...##########
##########...##########
##########...##########
##########...##########
#.....................#
+.....................+
#.....................#
##########...##########
##########...##########
##########...##########
##########...##########
##########...##########
##########...##########
##########...##########
##########...##########
##########...##########
###########+###########
""",use_prob=0.5,inheritable_properties={TP_CORRIDOR:1}))


basic_templates.append(Template("""
###########O###########
#.....................#
#.....................#
#..###.###...###.###..#
#..#XXXXX#...#XXXXX#..#
#..#XXXXX#...#XXXXX#..#
#...XXXXX.....XXXXX...#
#..#XXXXX#...#XXXXX#..#
#..#XXXXX#...#XXXXX#..#
#..###.###...###.###..#
#.....................#
O.....................O
#.....................#
#..###.###...###.###..#
#..#XXXXX#...#XXXXX#..#
#..#XXXXX#...#XXXXX#..#
#...XXXXX.....XXXXX...#
#..#XXXXX#...#XXXXX#..#
#..#XXXXX#...#XXXXX#..#
#..###.###...###.###..#
#.....................#
#.....................#
###########O###########
""",use_prob=0.1,child_only_properties={TP_NO_INTERIOR_WALLS:1},self_only_properties={TP_OPEN:1}))


basic_templates.append(Template("""
###########O###########
#.....................#
#.....................#
#..#######...#######..#
#..#XXXXX#...#XXXXX#..#
#..#XXXXX#...#XXXXX#..#
#..#XXXXX#...#XXXXX#..#
#..#XXXXX#...#XXXXX#..#
#..#XXXXX#...#XXXXX#..#
#..###.###...###.###..#
#.....................#
O.....................O
#.....................#
#..###.###...###.###..#
#..#XXXXX#...#XXXXX#..#
#..#XXXXX#...#XXXXX#..#
#..#XXXXX#...#XXXXX#..#
#..#XXXXX#...#XXXXX#..#
#..#XXXXX#...#XXXXX#..#
#..#######...#######..#
#.....................#
#.....................#
###########O###########
""",use_prob=0.1,child_only_properties={TP_WANT_ENCOUNTER:1},self_only_properties={TP_OPEN:1}))


basic_templates.append(Template("""
###########+###########
##########...##########
##########...##########
##########...##########
##########...##########
##########...##########
##########...##########
##########...##########
###########.###########
#########XXXXX#########
#.......#XXXXX#.......#
+........XXXXX........+
#.......#XXXXX#.......#
#########XXXXX#########
###########.###########
##########...##########
##########...##########
##########...##########
##########...##########
##########...##########
##########...##########
##########...##########
###########+###########
""",use_prob=0.4,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###########+###########
##########...##########
###########.###########
#########XXXXX#########
#########XXXXX#########
#########XXXXX#########
#########XXXXX#########
#########XXXXX#########
###########.###########
###XXXXX#XXXXX#XXXXX###
#.#XXXXX#XXXXX#XXXXX#.#
+..XXXXX.XXXXX.XXXXX..+
#.#XXXXX#XXXXX#XXXXX#.#
###XXXXX#XXXXX#XXXXX###
###########.###########
#########XXXXX#########
#########XXXXX#########
#########XXXXX#########
#########XXXXX#########
#########XXXXX#########
###########.###########
##########...##########
###########+###########
""",use_prob=0.4,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###########O###########
##########...##########
###########.###########
###XXXXX#XXXXX#XXXXX###
###XXXXX#XXXXX#XXXXX###
###XXXXX.XXXXX.XXXXX###
###XXXXX#XXXXX#XXXXX###
###XXXXX#XXXXX#XXXXX###
#####.#####.#####.#####
###XXXXX#XXXXX#XXXXX###
#.#XXXXX#XXXXX#XXXXX#.#
O..XXXXX.XXXXX.XXXXX..O
#.#XXXXX#XXXXX#XXXXX#.#
###XXXXX#XXXXX#XXXXX###
#####.#####.#####.#####
###XXXXX#XXXXX#XXXXX###
###XXXXX#XXXXX#XXXXX###
###XXXXX.XXXXX.XXXXX###
###XXXXX#XXXXX#XXXXX###
###XXXXX#XXXXX#XXXXX###
###########.###########
##########...##########
###########O###########
""",use_prob=0.15))


basic_templates.append(Template("""
###########O###########
#########XXXXX#########
#########XXXXX#########
#########XXXXX#########
#########XXXXX#########
#########XXXXX#########
###########.###########
#######XXXXXXXXX#######
#######XXXXXXXXX#######
#XXXXX#XXXXXXXXX#XXXXX#
#XXXXX#XXXXXXXXX#XXXXX#
OXXXXX.XXXXXXXXX.XXXXXO
#XXXXX#XXXXXXXXX#XXXXX#
#XXXXX#XXXXXXXXX#XXXXX#
#######XXXXXXXXX#######
#######XXXXXXXXX#######
###########.###########
#########XXXXX#########
#########XXXXX#########
#########XXXXX#########
#########XXXXX#########
#########XXXXX#########
###########O###########
""",use_prob=0.2))


basic_templates.append(Template("""
###########O###########
#XXXXX###XXXXX###XXXXX#
#XXXXX###XXXXX###XXXXX#
#XXXXX...XXXXX...XXXXX#
#XXXXX###XXXXX###XXXXX#
#XXXXX###XXXXX###XXXXX#
###.#######.#######.###
###.###XXXXXXXXX###.###
###.###XXXXXXXXX###.###
#XXXXX#XXXXXXXXX#XXXXX#
#XXXXX#XXXXXXXXX#XXXXX#
OXXXXX.XXXXXXXXX.XXXXXO
#XXXXX#XXXXXXXXX#XXXXX#
#XXXXX#XXXXXXXXX#XXXXX#
###.###XXXXXXXXX###.###
###.###XXXXXXXXX###.###
###.#######.#######.###
#XXXXX###XXXXX###XXXXX#
#XXXXX###XXXXX###XXXXX#
#XXXXX...XXXXX...XXXXX#
#XXXXX###XXXXX###XXXXX#
#XXXXX###XXXXX###XXXXX#
###########O###########
""",use_prob=0.15))


basic_templates.append(Template("""
###########+###########
##########...##########
##########...##########
##########...##########
##########...##########
##########...##########
###########.###########
#######XXXXXXXXX#######
#######XXXXXXXXX#######
#######XXXXXXXXX#######
#.....#XXXXXXXXX#.....#
+......XXXXXXXXX......+
#.....#XXXXXXXXX#.....#
#######XXXXXXXXX#######
#######XXXXXXXXX#######
#######XXXXXXXXX#######
###########.###########
##########...##########
##########...##########
##########...##########
##########...##########
##########...##########
###########+###########
""",use_prob=0.3))


basic_templates.append(Template("""
###########+###########
##########...##########
##########...##########
##########...##########
##########...##########
##########...##########
###########.###########
#######XXXXXXXXX#######
#######XXXXXXXXX#######
#######XXXXXXXXX#######
#.....#XXXXXXXXX#.....#
+......XXXXXXXXX......+
#.....#XXXXXXXXX#.....#
#######XXXXXXXXX#######
#######XXXXXXXXX#######
#######XXXXXXXXX#######
#######################
#######################
#######################
#######################
#######################
#######################
#######################
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###########O###########
#.#...................#
#.#.#################.#
#.#.#...............#.#
#.#.#.#############.#.#
#.#.#.#...........#.#.#
#.#.#.#.#########.#.#.#
#.#.#.#.#.......#.#.#.#
#.#.#.#.###.###.#.#.#.#
#.#.#.#.#XXXXX#.#.#.#.#
#.#.#.#.#XXXXX#.#.#.#.#
+.#.#.#.#XXXXX#.#.#.#.+
#.#.#.#.#XXXXX#.#.#.#.#
#.#.#.#.#XXXXX#.#.#.#.#
#.#.#.#.###.###.#.#.#.#
#.#.#.#.......#.#.#.#.#
#.#.#.#########.#.#.#.#
#.#.#...........#.#.#.#
#.#.#############.#.#.#
#.#...............#.#.#
#.#################.#.#
#...................#.#
###########O###########
""",use_prob=0.2,child_only_properties={TP_WANT_ENCOUNTER:1},self_only_properties={TP_MAZY:1}))


basic_templates.append(Template("""
###########O###########
#.....................#
#.....................#
#..########.########..#
#..#...............#..#
#..#...............#..#
#..#..#####.#####..#..#
#..#..#XXXXXXXXX#..#..#
#..#..#XXXXXXXXX#..#..#
#..#..#XXXXXXXXX#..#..#
#..#..#XXXXXXXXX#..#..#
O......XXXXXXXXX......O
#..#..#XXXXXXXXX#..#..#
#..#..#XXXXXXXXX#..#..#
#..#..#XXXXXXXXX#..#..#
#..#..#XXXXXXXXX#..#..#
#..#..#####.#####..#..#
#..#...............#..#
#..#...............#..#
#..########.########..#
#.....................#
#.....................#
###########O###########
""",use_prob=0.15,self_only_properties={TP_OPEN:1}))


basic_templates.append(Template("""
###########+###########
###########.###########
###########.###########
###########.###########
###########.###########
###########.###########
###########.###########
###########.###########
###########.###########
###########.###########
#XXXXXXXXX#.#XXXXXXXXX#
+XXXXXXXXX...XXXXXXXXX+
#XXXXXXXXX#.#XXXXXXXXX#
###########.###########
###########.###########
###########.###########
###########.###########
###########.###########
###########.###########
###########.###########
###########.###########
###########.###########
###########+###########
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###########O###########
##########...##########
##XXXXX###...###XXXXX##
##XXXXX#.......#XXXXX##
##XXXXX.........XXXXX##
##XXXXX#.......#XXXXX##
##XXXXX###...###XXXXX##
####.#####...#####.####
###...#####.#####...###
###...###XXXXX###...###
#.......#XXXXX#.......#
O........XXXXX........O
#.......#XXXXX#.......#
###...###XXXXX###...###
###...#####.#####...###
####.#####...#####.####
##XXXXX###...###XXXXX##
##XXXXX#.......#XXXXX##
##XXXXX.........XXXXX##
##XXXXX#.......#XXXXX##
##XXXXX###...###XXXXX##
##########...##########
###########O###########
""",use_prob=0.1))


basic_templates.append(Template("""
###########O###########
#XXXXXXXXX#.#XXXXXXXXX#
#XXXXXXXXX#.#XXXXXXXXX#
#XXXXXXXXX#.#XXXXXXXXX#
#XXXXXXXXX#.#XXXXXXXXX#
#XXXXXXXXX...XXXXXXXXX#
#XXXXXXXXX#.#XXXXXXXXX#
#XXXXXXXXX#.#XXXXXXXXX#
#XXXXXXXXX#.#XXXXXXXXX#
#XXXXXXXXX#.#XXXXXXXXX#
#####.#####.#####.#####
O.....................O
#####.#####.#####.#####
#XXXXXXXXX#.#XXXXXXXXX#
#XXXXXXXXX#.#XXXXXXXXX#
#XXXXXXXXX#.#XXXXXXXXX#
#XXXXXXXXX#.#XXXXXXXXX#
#XXXXXXXXX...XXXXXXXXX#
#XXXXXXXXX#.#XXXXXXXXX#
#XXXXXXXXX#.#XXXXXXXXX#
#XXXXXXXXX#.#XXXXXXXXX#
#XXXXXXXXX#.#XXXXXXXXX#
###########O###########
""",use_prob=0.4))


basic_templates.append(Template("""
###########+###########
###########.###########
###########.###########
###########.###########
####..............#####
####.######.#####.#####
####.######.#####.#####
####.##XXXXXXXXXXXXXXX#
####.##XXXXXXXXXXXXXXX#
####.##XXXXXXXXXXXXXXX#
####.##XXXXXXXXXXXXXXX#
+......XXXXXXXXXXXXXXXO
####.##XXXXXXXXXXXXXXX#
####.##XXXXXXXXXXXXXXX#
####.##XXXXXXXXXXXXXXX#
####.##XXXXXXXXXXXXXXX#
####.##XXXXXXXXXXXXXXX#
####...XXXXXXXXXXXXXXX#
#######XXXXXXXXXXXXXXX#
#######XXXXXXXXXXXXXXX#
#######XXXXXXXXXXXXXXX#
#######XXXXXXXXXXXXXXX#
###########O###########
""",use_prob=0.5,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###########O###########
#XXXXX###XXXXX#XXXXX###
#XXXXX###XXXXX#XXXXX###
#XXXXX...XXXXX.XXXXX###
#XXXXX###XXXXX#XXXXX###
#XXXXX###XXXXX#XXXXX###
###.#######.#####.#####
###.###XXXXXXXXXXXXXXX#
###.###XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
OXXXXX.XXXXXXXXXXXXXXXO
#XXXXX#XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
###.###XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
#XXXXX.XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
#######XXXXXXXXXXXXXXX#
#######XXXXXXXXXXXXXXX#
###########O###########
""",use_prob=0.2,self_only_properties={TP_NO_ORGANIC_SUBAREAS:1,TP_CLASSIC:1}))


basic_templates.append(Template("""
###########O###########
#########XXXXX#########
######..#XXXXX#..######
#####....XXXXX....#####
####...##XXXXX##..#####
###..####XXXXX##...####
##..#######.#####.#####
##..###XXXXXXXXXXXXXXX#
###.###XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
OXXXXX.XXXXXXXXXXXXXXXO
#XXXXX#XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
###.###XXXXXXXXXXXXXXX#
##..###XXXXXXXXXXXXXXX#
##...##XXXXXXXXXXXXXXX#
###....XXXXXXXXXXXXXXX#
####.##XXXXXXXXXXXXXXX#
#######XXXXXXXXXXXXXXX#
#######XXXXXXXXXXXXXXX#
#######XXXXXXXXXXXXXXX#
###########O###########
""",use_prob=0.2))


basic_templates.append(Template("""
###########O###########
#########XXXXXXXXX#####
#########XXXXXXXXX#####
#########XXXXXXXXX#####
###########.###.#######
###########.###...#####
###########.#####.#####
#######XXXXXXXXXXXXXXX#
#######XXXXXXXXXXXXXXX#
#XXX###XXXXXXXXXXXXXXX#
#XXX###XXXXXXXXXXXXXXX#
OXXX...XXXXXXXXXXXXXXXO
#XXX###XXXXXXXXXXXXXXX#
#XXX###XXXXXXXXXXXXXXX#
#XXX###XXXXXXXXXXXXXXX#
#XXX..#XXXXXXXXXXXXXXX#
#XXX#.#XXXXXXXXXXXXXXX#
#XXX#..XXXXXXXXXXXXXXX#
#######XXXXXXXXXXXXXXX#
#######XXXXXXXXXXXXXXX#
#######XXXXXXXXXXXXXXX#
#######XXXXXXXXXXXXXXX#
###########O###########
""",use_prob=0.2,self_only_properties={TP_NO_ORGANIC_SUBAREAS:1}))


basic_templates.append(Template("""
###########+###########
###########.###########
###########.###########
###########.###########
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
+...XXXXXXXXXXXXXXX...+
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
###########.###########
###########.###########
###########.###########
###########+###########
""",use_prob=0.6,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###########O###########
#.....................#
#.#########.#########.#
#.#########.#########.#
#.##XXXXXXXXXXXXXXX##.#
#.##XXXXXXXXXXXXXXX##.#
#.##XXXXXXXXXXXXXXX##.#
#.##XXXXXXXXXXXXXXX##.#
#.##XXXXXXXXXXXXXXX##.#
#.##XXXXXXXXXXXXXXX##.#
#.##XXXXXXXXXXXXXXX##.#
O...XXXXXXXXXXXXXXX...O
#.##XXXXXXXXXXXXXXX##.#
#.##XXXXXXXXXXXXXXX##.#
#.##XXXXXXXXXXXXXXX##.#
#.##XXXXXXXXXXXXXXX##.#
#.##XXXXXXXXXXXXXXX##.#
#.##XXXXXXXXXXXXXXX##.#
#.##XXXXXXXXXXXXXXX##.#
#.#########.#########.#
#.#########.#########.#
#.....................#
###########O###########
""",use_prob=0.2,self_only_properties={TP_NO_ORGANIC_SUBAREAS:1}))


basic_templates.append(Template("""
###########O###########
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
##..XXXXXXXXXXXXXXX..##
##.#XXXXXXXXXXXXXXX#.##
##.#XXXXXXXXXXXXXXX#.##
+..#XXXXXXXXXXXXXXX#..+
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
###########.###########
###########.###########
###########.###########
###########.###########
###########.###########
###########.###########
###########+###########
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###########O###########
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
##..XXXXXXXXXXXXXXX..##
##.#XXXXXXXXXXXXXXX#.##
##.#XXXXXXXXXXXXXXX#.##
+..#XXXXXXXXXXXXXXX#..+
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
###########.###########
###XXXXX###.###XXXXX###
###XXXXX###.###XXXXX###
###XXXXX.......XXXXX###
###XXXXX###.###XXXXX###
###XXXXX###.###XXXXX###
###########+###########
""",use_prob=0.3,self_only_properties={TP_NO_ORGANIC_SUBAREAS:1,TP_CLASSIC:1}))


basic_templates.append(Template("""
###########+###########
###########.###########
###########.###########
###########.###########
###########.###########
###########.###########
###########.###########
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
OXXXXXXXXXXXXXXXXXXXXXO
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
###########.###########
###########.###########
###########.###########
###########.###########
###########.###########
###########.###########
###########+###########
""",use_prob=0.5,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
OXXXXXXXXXXXXXXXXXXXXXO
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#######################
#######################
#######################
#######################
#######################
#######################
#######################
""",use_prob=1.0,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###########+###########
###########.###########
###########.###########
###########.###########
###########.###########
###########.###########
###########.###########
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
+XXXXXXXXXXXXXXXXXXXXX+
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
###########.###########
###########.###########
###########.###########
###########.###########
###########.###########
###########.###########
###########+###########
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###########O###########
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
###########.###########
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
OXXXXXXXXXXXXXXXXXXXXXO
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
###########.###########
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
###########O###########
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
OXXXXXXXXXXXXXXXXXXXXXO
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
#######################
""",use_prob=0.5,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###########+###########
#########XXXXX#########
#########XXXXX#########
#########XXXXX#########
#########XXXXX#########
#########XXXXX#########
###########.###########
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
OXXXXXXXXXXXXXXXXXXXXXO
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
###########.###########
#########XXXXX#########
#########XXXXX#########
#########XXXXX#########
#########XXXXX#########
#########XXXXX#########
###########+###########
""",use_prob=0.5,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###########+###########
###XXXXX###.###XXXXX###
###XXXXX###.###XXXXX###
###XXXXX.......XXXXX###
###XXXXX###.###XXXXX###
###XXXXX###.###XXXXX###
###########.###########
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
OXXXXXXXXXXXXXXXXXXXXXO
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXXXXXXXX#
###########.###########
###XXXXX###.###XXXXX###
###XXXXX###.###XXXXX###
###XXXXX.......XXXXX###
###XXXXX###.###XXXXX###
###XXXXX###.###XXXXX###
###########+###########
""",use_prob=0.3,self_only_properties={TP_NO_ORGANIC_SUBAREAS:1,TP_CLASSIC:1}))


basic_templates.append(Template("""
###########+###########
###########.###########
###########....########
##############.########
#XXXXX#XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
OXXXXX.XXXXXXXXXXXXXXXO
#XXXXX#XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
#XXXXX#XXXXXXXXXXXXXXX#
##############.########
###########....########
###########.###########
###########+###########
""",use_prob=0.3,self_only_properties={TP_NO_ORGANIC_SUBAREAS:1,TP_CLASSIC:1}))


basic_templates.append(Template("""
###########+###########
###########.###########
###########.###########
###########.###########
#XXXXX###XXXXX###XXXXX#
#XXXXX###XXXXX###XXXXX#
#XXXXX###XXXXX###XXXXX#
#XXXXX###XXXXX###XXXXX#
#XXXXX...XXXXX...XXXXX#
#XXXXX###XXXXX###XXXXX#
#XXXXX###XXXXX###XXXXX#
OXXXXX###XXXXX###XXXXXO
#XXXXX###XXXXX###XXXXX#
#XXXXX###XXXXX###XXXXX#
#XXXXX...XXXXX...XXXXX#
#XXXXX###XXXXX###XXXXX#
#XXXXX###XXXXX###XXXXX#
#XXXXX###XXXXX###XXXXX#
#XXXXX###XXXXX###XXXXX#
###########.###########
###########.###########
###########.###########
###########+###########
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###########+###########
###########.###########
####...............####
####.######.######.####
##XXXXX##XXXXX##XXXXX##
##XXXXX##XXXXX##XXXXX##
##XXXXX##XXXXX##XXXXX##
##XXXXX##XXXXX##XXXXX##
##XXXXX..XXXXX..XXXXX##
##XXXXX##XXXXX##XXXXX##
##XXXXX##XXXXX##XXXXX##
##XXXXX##XXXXX##XXXXX##
##XXXXX##XXXXX##XXXXX##
##XXXXX##XXXXX##XXXXX##
##XXXXX..XXXXX..XXXXX##
##XXXXX##XXXXX##XXXXX##
##XXXXX##XXXXX##XXXXX##
##XXXXX##XXXXX##XXXXX##
##XXXXX##XXXXX##XXXXX##
####.######.######.####
####...............####
###########.###########
###########+###########
""",use_prob=0.2,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###########O###########
#######.........#######
#######.........#######
#######.........#######
#XXXXX#.........#XXXXX#
#XXXXX#.........#XXXXX#
#XXXXX#.........#XXXXX#
#XXXXX#.........#XXXXX#
#XXXXX...........XXXXX#
#XXXXX#.........#XXXXX#
#XXXXX#.........#XXXXX#
OXXXXX#.........#XXXXXO
#XXXXX#.........#XXXXX#
#XXXXX#.........#XXXXX#
#XXXXX...........XXXXX#
#XXXXX#.........#XXXXX#
#XXXXX#.........#XXXXX#
#XXXXX#.........#XXXXX#
#XXXXX#.........#XXXXX#
#######.........#######
#######.........#######
#######.........#######
###########O###########
""",use_prob=0.3,self_only_properties={TP_OPEN:1,TP_CLASSIC:1}))


basic_templates.append(Template("""
###########O###########
###XXX####XXX####XXX###
###XXX####XXX####XXX###
###XXX....XXX....XXX###
###XXX####XXX####XXX###
#..XXX####XXX####XXX..#
#.#XXX####XXX####XXX#.#
#.#XXX....XXX....XXX#.#
#.#XXX####XXX####XXX#.#
#.#XXX####XXX####XXX#.#
#.###################.#
+.....................+
#.###################.#
#.#XXX####XXX####XXX#.#
#.#XXX####XXX####XXX#.#
#.#XXX....XXX....XXX#.#
#.#XXX####XXX####XXX#.#
#..XXX####XXX####XXX..#
###XXX####XXX####XXX###
###XXX....XXX....XXX###
###XXX####XXX####XXX###
###XXX####XXX####XXX###
###########O###########
""",use_prob=0.2))



basic_templates.append(Template("""
###########+#####
##########...####
##########...####
##########...####
##########......#
##########......+
##########......#
##########...####
##########...####
##########...####
####............#
####............+
####............#
####...###...####
####...###...####
####...###...####
#####+#####+#####
""",use_prob=0.2))


basic_templates.append(Template("""
###########+#####
##########XXX####
##########XXX####
##XXXXX#..XXX...#
##XXXXX#.#XXX##.#
##XXXXX..#XXX##.+
##XXXXX#.#XXX##.#
##XXXXX#..XXX...#
####.###.#XXX####
####.....#XXX####
#######.###.#####
#..##XXXXXXXXX#.+
#....XXXXXXXXX..#
#..##XXXXXXXXX###
#######.###.#####
#####..###..#####
#####+#####+#####
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###########O#####
#...............#
#...............#
#...............#
#...............#
#...............+
#...............#
#...............#
#...............#
#...............#
#...............#
O...............+
#...............#
#...............#
#...............#
#...............#
#####+#####+#####
""",use_prob=0.3,inheritable_properties={TP_WANT_ENCOUNTER:1,TP_OPEN:1}))


basic_templates.append(Template("""
###########O#####
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM+
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
OMMMMMMMMMMMMMMM+
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#####+#####+#####
""",use_prob=0.3,self_only_properties={TP_MAZY:1}))


basic_templates.append(Template("""
###########O#####
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM+
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
OMMMMMMMMMMMMMMM+
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#####+#####+#####
""",use_prob=0.1,inheritable_properties={TP_CONVERT:{'#':'~'},TP_WET:1,TP_OPEN:1,TP_MAZY:1}))


basic_templates.append(Template("""
###########O#####
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM+
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
OMMMMMMMMMMMMMMM+
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#####+#####+#####
""",use_prob=0.1,inheritable_properties={TP_CONVERT:{'#':'*'},TP_FIERY:1,TP_OPEN:1,TP_MAZY:1}))


basic_templates.append(Template("""
###########O#####
#BBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBB+
#BBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBB#
OBBBBBBBBBBBBBBB+
#BBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBB#
#####+#####+#####
""",use_prob=0.15,self_only_properties={TP_OPEN:1}))


basic_templates.append(Template("""
###########O#####
#BBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBB+
#BBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBB#
OBBBBBBBBBBBBBBB+
#BBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBB#
#####+#####+#####
""",use_prob=0.1,inheritable_properties={TP_CONVERT:{'#':':'},TP_OPEN:1}))


basic_templates.append(Template("""
###########+#####
##########...####
##########...####
##########...####
##########......#
##########......+
##########......#
##########...####
##########...####
##########...####
#...............#
+...............+
#...............#
####...###...####
####...###...####
####...###...####
#####+#####+#####
""",use_prob=0.2,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###########+#####
###########.#####
###########.#####
###XXXXX#XXXXX###
###XXXXX#XXXXX###
###XXXXX.XXXXX..+
###XXXXX#XXXXX###
###XXXXX#XXXXX###
#####.#####.#####
###XXXXX#XXXXX###
###XXXX##XXXXX###
+..XXXXX.XXXXX..+
###XXXXX#XXXXX###
###XXXXX#XXXXX###
#####.#####.#####
#####.#####.#####
#####+#####+#####
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###########+#####
###########.#####
###########.#####
#########...#####
#########.#######
#####XXXXXXXXX#.+
#####XXXXXXXXX#.#
#####XXXXXXXXX#.#
#####XXXXXXXXX#.#
###..XXXXXXXXX..#
###.#XXXXXXXXX#.#
+...#XXXXXXXXX#.+
#####XXXXXXXXX###
#####XXXXXXXXX###
#########.#######
#####.......#####
#####+#####+#####
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###########+#####
#######XXXXXXXXX#
#######XXXXXXXXX#
#######XXXXXXXXX#
#########.###.###
#########.......+
###########.#####
#XXX###XXXXXXXXX#
#XXX###XXXXXXXXX#
#XXX..#XXXXXXXXX#
#XXX#.#XXXXXXXXX#
+XXX#..XXXXXXXXX+
#XXX#.#XXXXXXXXX#
#XXX..#XXXXXXXXX#
#XXX#.#XXXXXXXXX#
#XXX#.#XXXXXXXXX#
#####+#####+#####
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#################
#################
#################
#################
#################
#################
#################
#################
+........########
########.########
########.########
########.########
########.########
########.########
########.########
########.########
########+########
""",use_prob=0.6,self_only_properties={TP_CLASSIC:1,TP_CORRIDOR:1}))


basic_templates.append(Template("""
#################
#################
##XXXXX####XXXXX#
##XXXXX####XXXXX#
##XXXXX....XXXXX#
##XXXXX####XXXXX#
##XXXXX####XXXXX#
####.########.###
+....########.###
####.########.###
##XXXXX####XXXXX#
##XXXXX####XXXXX#
##XXXXX....XXXXX#
##XXXXX#.##XXXXX#
##XXXXX#.##XXXXX#
########.########
########+########
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#################
#######XXXXXXXXX#
#######XXXXXXXXX#
#######XXXXXXXXX#
#######XXXXXXXXX#
###....XXXXXXXXX#
###.###XXXXXXXXX#
###.###XXXXXXXXX#
+...###XXXXXXXXX#
###.###XXXXXXXXX#
###.#######.#####
#XXXXX#####.#####
#XXXXX#####.#####
#XXXXX......#####
#XXXXX##.########
#XXXXX##.########
########+########
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#################
#################
#################
#################
#################
#################
#################
#.....###########
+.......#########
#........########
###......########
#####.....#######
######....#######
######....#######
#######...#######
#######...#######
########+########
""",use_prob=0.5,self_only_properties={TP_ORGANIC:1,TP_CORRIDOR:1}))


basic_templates.append(Template("""
#################
#######.....#####
####.........####
###.....###....##
##....######....#
##...########...#
##..#########...#
#...#######....##
+..######.....###
#######.....#####
######.....######
#####....########
#####...#########
#####...#########
#####....########
######....#######
########+########
""",use_prob=0.3,self_only_properties={TP_ORGANIC:1,TP_CORRIDOR:1}))


basic_templates.append(Template("""
#################
#...............#
#.#########.###.#
#.#######XXXXX#.#
#.#XXXXX#XXXXX#.#
#.#XXXXX#XXXXX#.#
#..XXXXX#XXXXX#.#
#.#XXXXX#XXXXX#.#
+.#XXXXX#######.#
#########XXXXX#.#
#########XXXXX#.#
#XXXXX###XXXXX..#
#XXXXX###XXXXX#.#
#XXXXX..#XXXXX#.#
#XXXXX#.#######.#
#XXXXX#.........#
########+########
""",use_prob=0.3,child_only_properties={TP_NO_INTERIOR_WALLS:1,TP_WANT_ENCOUNTER:1},self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#################
#######XXXXXXXXX#
#######XXXXXXXXX#
#######XXXXXXXXX#
#######XXXXXXXXX#
####...XXXXXXXXX#
###..##XXXXXXXXX#
##..###XXXXXXXXX#
+..####XXXXXXXXX#
#######XXXXXXXXX#
###########.#####
###########.#####
##########..#####
#########..######
########..#######
########.########
########+########
""",use_prob=0.3))


basic_templates.append(Template("""
#################
#################
#################
#################
##XXX##XXX##XXX##
##XXX##XXX##XXX##
##XXX..XXX..XXX##
##XXX##XXX##XXX##
O.XXX##XXX##XXX.O
##XXX##XXX##XXX##
##XXX..XXX..XXX##
##XXX##XXX##XXX##
##XXX##XXX##XXX##
#################
#################
#################
#################
""",use_prob=0.3))


basic_templates.append(Template("""
########O########
###...........###
###.#########.###
###.#########.###
##XXX##XXX##XXX##
##XXX##XXX##XXX##
##XXX..XXX..XXX##
##XXX##XXX##XXX##
O.XXX##XXX##XXX.O
##XXX##XXX##XXX##
##XXX..XXX..XXX##
##XXX##XXX##XXX##
##XXX##XXX##XXX##
###.#########.###
###.#########.###
###...........###
########O########
""",use_prob=0.3))


basic_templates.append(Template("""
########+########
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#.#############.#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
########+########
""",use_prob=0.3,self_only_properties={TP_MAZY:1}))


basic_templates.append(Template("""
#################
#################
#################
####XXXXXXXXX####
##..XXXXXXXXX..##
##.#XXXXXXXXX#.##
##.###########.##
##.#XXXXXXXXX#.##
+...XXXXXXXXX...+
##.#XXXXXXXXX#.##
##.###########.##
##.#XXXXXXXXX#.##
##..XXXXXXXXX..##
####XXXXXXXXX####
#################
#################
#################
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#################
#################
#################
####XXXXXXXXX####
##..XXXXXXXXX..##
##.#XXXXXXXXX#.##
##.###.##.####.##
##.#XXXXXXXXX#.##
+...XXXXXXXXX...+
##.#XXXXXXXXX#.##
##.###.##.####.##
##.#XXXXXXXXX#.##
##..XXXXXXXXX..##
####XXXXXXXXX####
#################
#################
#################
""",use_prob=0.3))


basic_templates.append(Template("""
#################
#################
#################
#################
#################
#################
#################
####XXXXXXXXX####
+...XXXXXXXXX...+
####XXXXXXXXX####
#################
#################
#################
#################
#################
#################
#################
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#################
#################
#################
#################
#################
#################
#################
#################
+...............+
#################
#################
#################
#################
#################
#################
#################
#################
""",use_prob=0.5,self_only_properties={TP_CLASSIC:1,TP_CORRIDOR:1}))


basic_templates.append(Template("""
#################
#################
#################
#################
#################
#################
#################
#...............#
+...............+
#...............#
#################
#################
#################
#################
#################
#################
#################
""",use_prob=0.5,self_only_properties={TP_CLASSIC:1,TP_CORRIDOR:1}))


basic_templates.append(Template("""
#################
#################
#################
#################
#################
#################
#################
#...............#
+.###..###..###.+
#...............#
#################
#################
#################
#################
#################
#################
#################
""",use_prob=0.3,inheritable_properties={TP_CORRIDOR:1}))


basic_templates.append(Template("""
#################
#################
#######...#######
#####.......#####
####....##..#####
###...####...####
##...####...#####
##..###....####.#
+..###....####..+
#.###...#####..##
####...#####...##
###...#####...###
###...####...####
####........#####
######.....######
#################
#################
""",use_prob=0.3,self_only_properties={TP_ORGANIC:1,TP_CORRIDOR:1}))


basic_templates.append(Template("""
#################
#################
#################
#################
#################
#################
#XXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXX#
OXXXXXXXXXXXXXXXO
#XXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXX#
#################
#################
#################
#################
#################
#################
""",use_prob=0.6))


basic_templates.append(Template("""
########+########
########.########
########.########
########.########
########.########
########.########
#XXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXX#
OXXXXXXXXXXXXXXXO
#XXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXX#
########.########
########.########
########.########
########.########
########.########
########+########
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#################
#################
####XXX###XXX####
####XXX###XXX####
####XXX###XXX####
#####.#####.#####
#XXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXX#
OXXXXXXXXXXXXXXXO
#XXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXX#
#####.#####.#####
####XXX###XXX####
####XXX###XXX####
####XXX###XXX####
#################
#################
""",use_prob=0.5,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#################
#################
#################
#################
#######XXXXXXXXX#
#######XXXXXXXXX#
#XXXXX#XXXXXXXXX#
#XXXXX#XXXXXXXXX#
+XXXXX.XXXXXXXXX#
#XXXXX#XXXXXXXXX#
#XXXXX#XXXXXXXXX#
#######XXXXXXXXX#
#######XXXXXXXXX#
#################
#################
#################
#################
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#################
#################
#########..######
#######.....#####
######.......####
#####.........###
####..........###
##.............##
+..............##
##.............##
####..........###
#####.........###
######.......####
#######.....#####
#########..######
#################
#################
""",use_prob=0.3,self_only_properties={TP_ORGANIC:1,TP_OPEN:1},inheritable_properties={TP_WANT_ENCOUNTER:1}))


basic_templates.append(Template("""
#################
#################
#################
#################
##########..#####
#######......####
#####.........###
##.............##
+...............#
##.............##
#####.........###
#######......####
##########..#####
#################
#################
#################
#################
""",use_prob=0.3,inheritable_properties={TP_WANT_ENCOUNTER:1,TP_OPEN:1,TP_ORGANIC:1}))


basic_templates.append(Template("""
#################
#################
##...#######...##
##......###....##
####..........###
######.......####
######...########
###........######
+...........#####
##...####....####
##########....###
###########...###
##....###.....###
##...........####
####.......######
#################
#################
""",use_prob=0.2,self_only_properties={TP_ORGANIC:1}))


basic_templates.append(Template("""
#################
#################
#################
#######XXXXX#####
#XXX###XXXXX#####
#XXX#..XXXXX#####
#XXX..#XXXXX#####
#XXX###XXXXX#####
+XXX#############
#XXX###XXXXX#####
#XXX..#XXXXX#####
#XXX#..XXXXX#####
#XXX###XXXXX#####
#######XXXXX#####
#################
#################
#################
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#################
#################
#################
#################
#XXX###XXXXXXXXX#
#XXX#..XXXXXXXXX#
#XXX..#XXXXXXXXX#
#XXX#############
+XXX#############
#XXX#############
#XXX..#XXXXXXXXX#
#XXX#..XXXXXXXXX#
#XXX###XXXXXXXXX#
#################
#################
#################
#################
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
########+########
########.########
#######...#######
######.....######
#####.......#####
####.........####
###...........###
##.............##
+...............+
#################
#################
#################
#################
#################
#################
#################
#################
""",use_prob=0.2,self_only_properties={TP_OPEN:1}))


basic_templates.append(Template("""
########+########
########.########
########.########
########.########
########.########
########.########
########.########
########.########
+...............+
#################
#################
#################
#################
#################
#################
#################
#################
""",use_prob=0.5,self_only_properties={TP_CLASSIC:1,TP_CORRIDOR:1}))


basic_templates.append(Template("""
########+########
########.########
########.########
########.########
#...............#
#.######.######.#
#.######.######.#
#.##XXXXXXXXX##.#
+.##XXXXXXXXX##.+
####XXXXXXXXX####
####XXXXXXXXX####
####XXXXXXXXX####
####XXXXXXXXX####
####XXXXXXXXX####
####XXXXXXXXX####
####XXXXXXXXX####
#################
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
########+########
########.########
#...............#
#.######.######.#
#.#...........#.#
#.#...........#.#
#.#...........#.#
#.#...........#.#
+.#...........#.+
###...........###
###...........###
###...........###
###...........###
###...........###
###...........###
###...........###
#################
""",use_prob=0.2,inheritable_properties={TP_WANT_ENCOUNTER:1,TP_OPEN:1},self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
########+########
#######...#######
#######...#######
#######...#######
#######...#######
#######...#######
#######...#######
#...............#
+...............+
#...............#
#################
#################
#################
#################
#################
#################
#################
""",use_prob=0.4,inheritable_properties={TP_CORRIDOR:1}))


basic_templates.append(Template("""
########+########
#######..########
#####......######
####...##....####
###..#####....###
###...######...##
####...######..##
#####...######..#
+.####...#####..+
#..####...####..#
#..#####...##..##
#...#####..##..##
##...####.....###
###...##.....####
####......#######
######..#########
#################
""",use_prob=0.2,self_only_properties={TP_ORGANIC:1}))


basic_templates.append(Template("""
########O########
#...............#
#...............#
#...............#
#...............#
#...............#
#...............#
#...............#
O...............O
#...............#
#...............#
#...............#
#...............#
#...............#
#...............#
#...............#
########O########
""",use_prob=0.4,inheritable_properties={TP_WANT_ENCOUNTER:1,TP_OPEN:1}))


basic_templates.append(Template("""
########O########
#...............#
#...............#
#..~~~..........#
#..~~~~~........#
#.~~~~~~........#
#.~~~~~~...~~~..#
#...~~~...~~~~~.#
O.........~~~~~.O
#.........~~~~..#
#....~~~...~~~..#
#...~~~~~.......#
#...~~~~~~~.....#
#...~~~~~~~.....#
#....~~~~~~.....#
#...............#
########O########
""",use_prob=0.1,inheritable_properties={TP_WET:1,TP_OPEN:1}))


basic_templates.append(Template("""
########O########
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
OMMMMMMMMMMMMMMMO
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
########O########
""",use_prob=0.2,self_only_properties={TP_MAZY:1}))


basic_templates.append(Template("""
########O########
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
OMMMMMMMMMMMMMMMO
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
########O########
""",use_prob=0.1,inheritable_properties={TP_CONVERT:{'#':'~'},TP_WET:1,TP_OPEN:1,TP_MAZY:1}))


basic_templates.append(Template("""
########O########
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
OMMMMMMMMMMMMMMMO
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
########O########
""",use_prob=0.1,inheritable_properties={TP_CONVERT:{'#':'*'},TP_FIERY:1,TP_OPEN:1,TP_MAZY:1}))


basic_templates.append(Template("""
########O########
#BBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBB#
OBBBBBBBBBBBBBBBO
#BBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBB#
########O########
""",use_prob=0.1,self_only_properties={TP_OPEN:1}))


basic_templates.append(Template("""
########O########
#XXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXX#
OXXXXXXXXXXXXXXXO
#XXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXX#
########O########
""",use_prob=0.1,inheritable_properties={TP_CONVERT:{'#':'~'},TP_WET:1,TP_OPEN:1}))


basic_templates.append(Template("""
########+########
########.########
########.########
########.########
########.########
########.########
########.########
########.########
+...............+
########.########
########.########
########.########
########.########
########.########
########.########
########.########
########+########
""",use_prob=0.6,self_only_properties={TP_CLASSIC:1,TP_CORRIDOR:1}))


basic_templates.append(Template("""
########O########
######.....######
####.........####
###...........###
##.............##
##.............##
#...............#
#...............#
O...............O
#...............#
#...............#
##.............##
##.............##
###...........###
####.........####
######.....######
########O########
""",use_prob=0.2,inheritable_properties={TP_WANT_ENCOUNTER:1,TP_OPEN:1}))


basic_templates.append(Template("""
########+########
########.########
########.########
#######...#######
#####.......#####
####.........####
####.........####
###...........###
+...............+
###...........###
####.........####
####.........####
#####.......#####
#######...#######
########.########
########.########
########+########
""",use_prob=0.4,inheritable_properties={TP_WANT_ENCOUNTER:1,TP_OPEN:1}))


basic_templates.append(Template("""
########O########
######.....######
####.........####
###....###....###
##...#######...##
##..#########..##
#...#########...#
#..###########..#
O..###########..O
#..###########..#
#...#########...#
##..#########..##
##...#######...##
###....###....###
####.........####
######.....######
########O########
""",use_prob=0.2))


basic_templates.append(Template("""
########+########
#~~~~~.....~~~~~#
#~~~~~.....~~~~~#
#~~~~~~...~~~~~~#
#~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~#
#################
""",use_prob=0.2,self_only_properties={TP_ORGANIC:1,TP_OPEN:1},inheritable_properties={TP_WET:1}))


basic_templates.append(Template("""
########+########
########..#######
#########...#####
###########..####
############..###
##....#######.###
#..~~...#####..##
#.~~~~~.######.##
#.~~~~~.######.##
#..~~~..######.##
##.....#######.##
##..#########..##
###.#######...###
###..####...#####
####......#######
#################
#################
""",use_prob=0.2,self_only_properties={TP_ORGANIC:1},inheritable_properties={TP_WET:1}))


basic_templates.append(Template("""
########O########
######.....######
####.........####
###....~~~....###
##...~~~~~~~...##
##..~~~~~~~~~..##
#...~~~~~~~~~...#
#..~~~~~~~~~~~..#
O..~~~~~~~~~~~..O
#..~~~~~~~~~~~..#
#...~~~~~~~~~...#
##..~~~~~~~~~..##
##...~~~~~~~...##
###....~~~....###
####.........####
######.....######
########O########
""",use_prob=0.1,self_only_properties={TP_WET:1,TP_OPEN:1}))


basic_templates.append(Template("""
########O########
######.....######
####.........####
###....~~~....###
##..~~~~~~~~~..##
##..~.......~..##
#...~.##.##.~...#
#..~~.#XXX#.~~..#
O..~~.#XXX#.~~..O
#..~~.#XXX#.~~..#
#...~.#####.~...#
##..~.......~..##
##..~~~~~~~~~..##
###....~~~....###
####.........####
######.....######
########O########
""",use_prob=0.2,self_only_properties={TP_WET:1,TP_OPEN:1},child_only_properties={TP_NO_INTERIOR_WALLS:1,TP_WANT_ENCOUNTER:1}))


basic_templates.append(Template("""
########O########
######.....######
####.........####
###....***....###
##..*********..##
##..*.......*..##
#...*.##.##.*...#
#..**.#XXX#.**..#
O..**.#XXX#.**..O
#..**.#XXX#.**..#
#...*.#####.*...#
##..*.......*..##
##..*********..##
###....***....###
####.........####
######.....######
########O########
""",use_prob=0.2,self_only_properties={TP_FIERY:1,TP_OPEN:1},child_only_properties={TP_NO_INTERIOR_WALLS:1,TP_WANT_ENCOUNTER:1}))


basic_templates.append(Template("""
########O########
#...............#
#...............#
#..#####.#####..#
#..#.........#..#
#..#.........#..#
#..#..##.##..#..#
#..#..#...#..#..#
O...............O
#..#..#...#..#..#
#..#..##.##..#..#
#..#.........#..#
#..#.........#..#
#..#####.#####..#
#...............#
#...............#
########O########
""",use_prob=0.2,self_only_properties={TP_OPEN:1,TP_MAZY:1}))


basic_templates.append(Template("""
########O########
#.#.............#
#.#.###########.#
#.#.#.........#.#
#.#.#.#######.#.#
#.#.#.#.....#.#.#
#.#.#.#.###.#.#.#
#.#.#.#.#.#.#.#.#
O.#.#.#...#.#.#.O
#.#.#.#.#.#.#.#.#
#.#.#.###.#.#.#.#
#.#.#.....#.#.#.#
#.#.#######.#.#.#
#.#.........#.#.#
#.###########.#.#
#.............#.#
########O########
""",use_prob=0.2,self_only_properties={TP_MAZY:1}))


basic_templates.append(Template("""
#################
#################
#################
####.......######
###..#####..#####
###.#######...###
###.#.#######.###
###...:######..##
###.:..:######.##
###..:.:######.##
####:..:######.##
#####::######..##
############..###
###########..####
#########...#####
########..#######
########+########
""",use_prob=0.3))


basic_templates.append(Template("""
########O########
#.........##....#
#.##......##....#
#.##..##........#
#.....##....##..#
#...........##..#
#...##..........#
#...##..##......#
O.......##......O
#............##.#
#.##.........##.#
#.##.....##.....#
#........##.....#
#....##.........#
#....##......##.#
#............##.#
########O########
""",use_prob=0.4,inheritable_properties={TP_WANT_ENCOUNTER:1,TP_OPEN:1}))


basic_templates.append(Template("""
########+########
#######...#######
#######...#######
#######...#######
#######...#######
#######...#######
#######...#######
#...............#
+...............+
#...............#
#######...#######
#######...#######
#######...#######
#######...#######
#######...#######
#######...#######
########+########
""",use_prob=0.6,inheritable_properties={TP_CORRIDOR:1}))


basic_templates.append(Template("""
########+########
#######...#######
#######...#######
#######...#######
#######...#######
#######...#######
#######...#######
#...............#
+.......!.......+
#...............#
#######...#######
#######...#######
#######...#######
#######...#######
#######...#######
#######...#######
########+########
""",use_prob=0.2,inheritable_properties={TP_CORRIDOR:1}))


basic_templates.append(Template("""
########+########
#######...#######
#######...#######
#######...#######
#######...#######
########.########
######XXXXX######
#....#XXXXX#....#
+.....XXXXX.....+
#....#XXXXX#....#
######XXXXX######
########.########
#######...#######
#######...#######
#######...#######
#######...#######
########+########
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
########+########
########.########
##XXXXX#.#XXXXX##
##XXXXX#.#XXXXX##
##XXXXX...XXXXX##
##XXXXX#.#XXXXX##
##XXXXX#.#XXXXX##
####.###.###.####
+...............+
####.###.###.####
##XXXXX#.#XXXXX##
##XXXXX#.#XXXXX##
##XXXXX...XXXXX##
##XXXXX#.#XXXXX##
##XXXXX#.#XXXXX##
########.########
########+########
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
########O########
#...............#
#.######.######.#
#.######.######.#
#.##.........##.#
#.##.###.###.##.#
#.##.#XXXXX#.##.#
#.##.#XXXXX#.##.#
O.....XXXXX.....O
#.##.#XXXXX#.##.#
#.##.#XXXXX#.##.#
#.##.###.###.##.#
#.##.........##.#
#.######.######.#
#.######.######.#
#...............#
########O########
""",use_prob=0.3))


basic_templates.append(Template("""
########+########
########.########
##.............##
##.#####.#####.##
##.#XXXXXXXXX#.##
##.#XXXXXXXXX#.##
##.#XXXXXXXXX#.##
##.#XXXXXXXXX#.##
+...XXXXXXXXX...+
##.#XXXXXXXXX#.##
##.#XXXXXXXXX#.##
##.#XXXXXXXXX#.##
##.#XXXXXXXXX#.##
##.#####.#####.##
##.............##
########.########
########+########
""",use_prob=0.3))


basic_templates.append(Template("""
########+########
########.########
########.########
########.########
####XXXXXXXXX####
####XXXXXXXXX####
####XXXXXXXXX####
####XXXXXXXXX####
+...XXXXXXXXX...+
####XXXXXXXXX####
####XXXXXXXXX####
####XXXXXXXXX####
####XXXXXXXXX####
#################
#################
#################
#################
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
########O########
####XXXXXXXXX####
####XXXXXXXXX####
####XXXXXXXXX####
####XXXXXXXXX####
##..XXXXXXXXX..##
##.#XXXXXXXXX#.##
##.#XXXXXXXXX#.##
+..#XXXXXXXXX#..+
##.#XXXXXXXXX#.##
##.#####.#####.##
##.............##
########.########
########.########
########.########
########.########
########+########
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
########O########
#XXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXX#
#####.#####.#####
#...............#
O...............O
#...............#
#####.#####.#####
#XXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXX#
########O########
""",use_prob=0.15,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
########+########
########.########
########.########
########.########
#####.......#####
#####.#####.#####
#XXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXX#
OXXXXXXXXXXXXXXXO
#XXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXX#
#####.#####.#####
#####.......#####
########.########
########.########
########.########
########+########
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
########+########
########.########
########.########
########.########
#####.......#####
#####.#####.#####
#XXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXX#
#####.#####.#####
#####.......#####
########.########
########.########
########.########
########+########
""",use_prob=0.5,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
########+########
#####.......#####
#####.#####.#####
#XXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXX#
#####.#####.#####
#XXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXX#
#####.#####.#####
#####.......#####
########+########
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
########+########
#XXX####.####XXX#
#XXX...#.#...XXX#
#XXX##.#.#.##XXX#
#####.......#####
#####.#####.#####
#XXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXX#
OXXXXXXXXXXXXXXXO
#XXXXXXXXXXXXXXX#
#XXXXXXXXXXXXXXX#
#####.#####.#####
#####.......#####
#XXX##.#.#.##XXX#
#XXX...#.#...XXX#
#XXX####.####XXX#
########+########
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#######
#.....#
#.....#
#.....#
#.....#
#.....#
#.....#
#.....#
+.....+
#.....#
#.....#
#.....#
#.....#
#.....#
#.....#
#.....#
#######
""",use_prob=1,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#######
#MMMMM#
#MMMMM#
#MMMMM#
#MMMMM#
#MMMMM#
#MMMMM#
#MMMMM#
+MMMMM+
#MMMMM#
#MMMMM#
#MMMMM#
#MMMMM#
#MMMMM#
#MMMMM#
#MMMMM#
#######
""",use_prob=0.8,self_only_properties={TP_MAZY:1}))


basic_templates.append(Template("""
#######
#.....#
#.....#
#.....#
#.....#
###.###
#XXXXX#
#XXXXX#
+XXXXX+
#XXXXX#
#XXXXX#
###.###
#.....#
#.....#
#.....#
#.....#
#######
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#######
#######
##XXX##
##XXX##
##XXX##
###.###
#XXXXX#
#XXXXX#
+XXXXX+
#XXXXX#
#XXXXX#
###.###
##XXX##
##XXX##
##XXX##
#######
#######
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#################
#################
#################
+...............+
#################
#################
#################
""",use_prob=0.8,self_only_properties={TP_CLASSIC:1,TP_CORRIDOR:1}))


basic_templates.append(Template("""
#################
#################
####XXXXXXXXX####
+...XXXXXXXXX...+
####XXXXXXXXX####
#################
#################
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#################
#################
#...............#
+...:...:...:...O
#...............#
#################
#################
""",use_prob=0.2,self_only_properties={TP_CLASSIC:1,TP_CORRIDOR:1}))


basic_templates.append(Template("""
#################
#################
#...............#
+...............O
#...............#
#################
#################
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1,TP_CORRIDOR:1}))


basic_templates.append(Template("""
#################
#################
#XXXXXXXXX#######
+XXXXXXXXX#######
#XXXXXXXXX#######
#################
#################
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#################
##..............#
##.############.#
+..##XXXXXXXXX#.+
##...XXXXXXXXX#.#
#####XXXXXXXXX###
#################
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#################
#################
#XXX#XXXXXXXXX###
+XXX.XXXXXXXXX###
#XXX#XXXXXXXXX###
#################
#################
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#################
#################
#...............#
+...!...!...!...O
#...............#
#################
#################
""",use_prob=0.2,self_only_properties={TP_CLASSIC:1,TP_CORRIDOR:1}))


basic_templates.append(Template("""
########O########
######XXXXX######
######XXXXX######
+.....XXXXX.....+
######XXXXX######
######XXXXX######
########O########
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#################
#################
####XXXXXXXXX####
+...XXXXXXXXX...+
####XXXXXXXXX####
#################
#################
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#################
#################
###..*..*..*..###
+....*..*..*....+
###..*..*..*..###
#################
#################
""",use_prob=0.1,inheritable_properties={TP_FIERY:1},self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#################
#################
#XXX#XXX#XXX#XXX#
+XXX.XXX.XXX.XXXO
#XXX#XXX#XXX#XXX#
#################
#################
""",use_prob=0.2))


basic_templates.append(Template("""
########+########
########.########
#...............#
O...............O
#...............#
########.########
########+########
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
########O########
####XXXXXXXXX####
##..XXXXXXXXX..##
+..#XXXXXXXXX#..+
######.###.######
######.....######
########+########
""",use_prob=0.6,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
########+########
########.########
##XXX##XXX##XXX##
O.XXX..XXX..XXX.O
##XXX##XXX##XXX##
########.########
########+########
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
########O########
#####.......#####
##.............##
O...............O
##.............##
#####.......#####
########O########
""",use_prob=0.2,inheritable_properties={TP_WANT_ENCOUNTER:1}))


basic_templates.append(Template("""
########O########
#####.......#####
##.....~~~.....##
O.....~~~~~.....O
##.....~~~.....##
#####.......#####
########O########
""",use_prob=0.1,inheritable_properties={TP_WET:1}))


basic_templates.append(Template("""
#################
#################
####XXXXXXXXX####
+...XXXXXXXXX####
####XXXXXXXXX####
#################
#################
""",use_prob=0.4,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#################
###########XXXXX#
###########XXXXX#
+..........XXXXXO
###########XXXXX#
###########XXXXX#
#################
""",use_prob=0.4,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#################
###########XXXXX#
#XXXXXXXXX#XXXXX#
+XXXXXXXXX.XXXXXO
#XXXXXXXXX#XXXXX#
###########XXXXX#
#################
""",use_prob=0.4,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#####O#####O#####
#...............#
#...............#
O...............O
#...............#
#...............#
#####O#####O#####
""",use_prob=0.6,inheritable_properties={TP_WANT_ENCOUNTER:1},self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#####O#####O#####
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
OMMMMMMMMMMMMMMMO
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#####O#####O#####
""",use_prob=0.2,self_only_properties={TP_MAZY:1}))


basic_templates.append(Template("""
#####O#####O#####
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
OMMMMMMMMMMMMMMMO
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
#####O#####O#####
""",use_prob=0.07,inheritable_properties={TP_CONVERT:{'#':'*'},TP_FIERY:1,TP_MAZY:1}))


basic_templates.append(Template("""
#####O#####O#####
#BBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBB#
OBBBBBBBBBBBBBBBO
#BBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBB#
#####O#####O#####
""",use_prob=0.07))


basic_templates.append(Template("""
#####O#####O#####
#BBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBB#
OBBBBBBBBBBBBBBBO
#BBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBB#
#####O#####O#####
""",use_prob=0.04,inheritable_properties={TP_CONVERT:{'#':':'}}))


basic_templates.append(Template("""
#####O#####O#####
#BBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBB#
OBBBBBBBBBBBBBBBO
#BBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBB#
#####O#####O#####
""",use_prob=0.04,inheritable_properties={TP_CONVERT:{'#':'*'},TP_FIERY:1}))


basic_templates.append(Template("""
#####+#####+#####
#####.#####.#####
#####.#####.#####
+...............+
#####.#####.#####
#####.#####.#####
#####+#####+#####
""",use_prob=0.4,self_only_properties={TP_CLASSIC:1,TP_CORRIDOR:1}))


basic_templates.append(Template("""
#####O#####O#####
####.........####
##.............##
O...............O
##.............##
####.........####
#####O#####O#####
""",use_prob=0.35,inheritable_properties={TP_WANT_ENCOUNTER:1}))


basic_templates.append(Template("""
#####O#####O#####
####...###...####
##......#......##
O...............O
##......#......##
####...###...####
#####O#####O#####
""",use_prob=0.2,inheritable_properties={TP_WANT_ENCOUNTER:1}))


basic_templates.append(Template("""
#####O#####O#####
###...........###
#....#.....#....#
O...###...###...O
#....#.....#....#
###...........###
#####O#####O#####
""",use_prob=0.2))


basic_templates.append(Template("""
#####O#####O#####
#.#...#...#...#.#
#.#.#.#.#.#.#.#.#
+.#.#.#.#.#.#.#.+
#.#.#.#.#.#.#.#.#
#...#...#...#...#
#####O#####O#####
""",use_prob=0.3,self_only_properties={TP_MAZY:1}))


basic_templates.append(Template("""
#####O#####O#####
###XXXXX#XXXXX###
###XXXXX#XXXXX###
+..XXXXX.XXXXX..+
###XXXXX#XXXXX###
###XXXXX#XXXXX###
#####O#####O#####
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#####+#####+#####
####...###...####
####.........####
####.........####
####.........####
####...###...####
#####+#####+#####
""",use_prob=0.4))


basic_templates.append(Template("""
#####+#####+#####
#####.#####.#####
#####.#####.#####
#####.......#####
#####.#####.#####
#####.#####.#####
#####+#####+#####
""",use_prob=0.6,self_only_properties={TP_CLASSIC:1,TP_CORRIDOR:1}))


basic_templates.append(Template("""
#####+#####+#####
#####.......#####
#####.#####.#####
#####.#####.#####
#####.#####.#####
#####.......#####
#####+#####+#####
""",use_prob=0.6,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#####O#####O#####
###XXXXX#XXXXX###
###XXXXX#XXXXX###
###XXXXX.XXXXX###
###XXXXX#XXXXX###
###XXXXX#XXXXX###
#####O#####O#####
""",use_prob=0.5,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#####+#####+#####
#####.#####.#####
####XXX###XXX####
####XXX...XXX####
####XXX###XXX####
#####.#####.#####
#####+#####+#####
""",use_prob=0.4,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#####O#####O#####
#...............#
#.#############.#
+.#############.+
#################
#################
#################
""",use_prob=0.4,self_only_properties={TP_CLASSIC:1,TP_CORRIDOR:1}))


basic_templates.append(Template("""
#####+#####+#####
#####.#####.#####
#####.#####.#####
+.###.#####.###.+
#.###.#####.###.#
#...............#
#################
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#####+#####+#####
#####..###..#####
######.###.######
+.##XXXXXXXXX##.+
#...XXXXXXXXX...#
####XXXXXXXXX####
#################
""",use_prob=0.3))


basic_templates.append(Template("""
#####O#####O#####
#...............#
#.##.###.###.##.#
+.#XXX#XXX#XXX#.+
###XXX#XXX#XXX###
###XXX#XXX#XXX###
#################
""",use_prob=0.3,child_only_properties={TP_NO_INTERIOR_WALLS:1,TP_WANT_ENCOUNTER:1},self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#####+#####+#####
#####.#XXX#.#####
#####..XXX..#####
+.###.#XXX#.###.+
#.###.#####.###.#
#...............#
#################
""",use_prob=0.2,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#####+#####+#####
###XXXXX#XXXXX###
###XXXXX#XXXXX###
###XXXXX.XXXXX###
###XXXXX#XXXXX###
###XXXXX#XXXXX###
#################
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#####O#####O#####
#...............#
#...............#
O...............O
#...............#
#...............#
########+########
""",use_prob=0.4,inheritable_properties={TP_WANT_ENCOUNTER:1}))


basic_templates.append(Template("""
#####O#####O#####
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
OMMMMMMMMMMMMMMMO
#MMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMM#
########+########
""",use_prob=0.2,self_only_properties={TP_MAZY:1}))


basic_templates.append(Template("""
#####+#####+#####
#####..###..#####
######.###.######
+..#XXXXXXXXX#..+
##..XXXXXXXXX..##
####XXXXXXXXX####
#################
""",use_prob=0.5))

basic_templates.append(Template("""
#####+#####+#####
####.........####
##.............##
O...............O
#...............#
#####.......#####
########+########
""",use_prob=0.2,inheritable_properties={TP_WANT_ENCOUNTER:1}))


basic_templates.append(Template("""
#####+#####+#####
#####.#####.#####
#####.#####.#####
+.....#####.....+
#####.#####.#####
#####.......#####
########+########
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1,TP_CORRIDOR:1}))


basic_templates.append(Template("""
#####O#####O#####
#...#.......#...#
#.#.#.##.##.#.#.#
+.#.#.##.##.#.#.+
###.#.##.##.#.###
###...##.##...###
########+########
""",use_prob=0.2,self_only_properties={TP_MAZY:1}))


basic_templates.append(Template("""
#####O#####O#####
#...............#
#.#############.#
O.#...........#.O
#.######.######.#
#...............#
########+########
""",use_prob=0.3,self_only_properties={TP_MAZY:1}))


basic_templates.append(Template("""
#####O#####O#####
#####..###..#####
######.###.######
O.##XXXXXXXXX##.O
#...XXXXXXXXX...#
####XXXXXXXXX####
########+########
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#####O#####O#####
#......##....##.#
#.##...##....##.#
O.##......##....O
#....##...##..###
#....##.......###
########+########
""",use_prob=0.4))


basic_templates.append(Template("""
#####+#####+#####
#####.#XXX#.#####
#####.#XXX#.#####
+.....#XXX#.....+
#####.##.##.#####
#####.......#####
########+########
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#####+#####+#####
#####.#####.#####
#####.#####.#####
#####.#####.#####
#####.#####.#####
#####.......#####
########O########
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#####+#####+#####
#.....#####.....#
#.....#####.....#
#.....#####.....#
#.....#####.....#
#...............#
########O########
""",use_prob=0.3,inheritable_properties={TP_WANT_ENCOUNTER:1},self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#####+#####+#####
#####..###..#####
######.###.######
####XXXXXXXXX####
####XXXXXXXXX####
####XXXXXXXXX####
########O########
""",use_prob=0.3))


basic_templates.append(Template("""
#####+#####+#####
#####.#####.#####
#XXX#.#####.#XXX#
#XXX..#####..XXX#
#XXX#.#####.#XXX#
#####.......#####
########O########
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###########+###########
#####.............#####
####...............####
####..####...####..####
####.######.######.####
##XXXXX##XXXXX##XXXXX##
##XXXXX##XXXXX##XXXXX##
##XXXXX##XXXXX##XXXXX##
##XXXXX##XXXXX##XXXXX##
##XXXXX##XXXXX##XXXXX##
#######################
""",use_prob=0.3,child_only_properties={TP_NO_INTERIOR_WALLS:1,TP_WANT_ENCOUNTER:1}))


basic_templates.append(Template("""
###########+###########
#XXXXXXXXX#.#XXXXXXXXX#
#XXXXXXXXX#.#XXXXXXXXX#
#XXXXXXXXX#.#XXXXXXXXX#
#XXXXXXXXX#.#XXXXXXXXX#
OXXXXXXXXX...XXXXXXXXXO
#XXXXXXXXX###XXXXXXXXX#
#XXXXXXXXX###XXXXXXXXX#
#XXXXXXXXX###XXXXXXXXX#
#XXXXXXXXX###XXXXXXXXX#
#######################
""",use_prob=0.7,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###########O###########
#######XXXXXXXXX#######
#######XXXXXXXXX#######
#######XXXXXXXXX#######
#######XXXXXXXXX#######
+......XXXXXXXXX......+
#######XXXXXXXXX#######
#######XXXXXXXXX#######
#######XXXXXXXXX#######
#######XXXXXXXXX#######
###########O###########
""",use_prob=0.7,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#######################
#############XXXXXXXXX#
#############XXXXXXXXX#
#############XXXXXXXXX#
#############XXXXXXXXX#
+............XXXXXXXXXO
#############XXXXXXXXX#
#############XXXXXXXXX#
#############XXXXXXXXX#
#############XXXXXXXXX#
#######################
""",use_prob=0.4,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###########+###########
#.........#...#.......#
#.#######.###...#####.#
#.#XXXXX#...#####...#.#
#.#XXXXX###.......#.#.#
#.#XXXXX..#########.#.#
#.#XXXXX#.........#.#.#
#.#XXXXX#########...#.#
#.#######...#...#####.#
#.........#...#.......#
#######################
""",use_prob=0.3,child_only_properties={TP_WANT_ENCOUNTER:1},self_only_properties={TP_MAZY:1}))


basic_templates.append(Template("""
###########O###########
#XXX#XXX#XXXXX#XXX#XXX#
#XXX#XXX#XXXXX#XXX#XXX#
#XXX.XXX.XXXXX.XXX.XXX#
#XXX#XXX#XXXXX#XXX#XXX#
OXXX#XXX#XXXXX#XXX#XXXO
#XXX#XXX###.###XXX#XXX#
#XXX.XXX.......XXX.XXX#
#XXX#XXX#######XXX#XXX#
#XXX#XXX#######XXX#XXX#
#######################
""",use_prob=0.3))


basic_templates.append(Template("""
###########+###########
###########.###########
########.......########
########.#####.########
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
#######################
#######################
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###########O###########
########.......########
########.#####.########
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
########.#####.########
########.......########
###########O###########
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###########+###########
########.......########
########.#####.########
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
+...XXXXXXXXXXXXXXX...#
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
#######################
#######################
###########+###########
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###########+###########
#######XXXXXXXXX#######
##.....XXXXXXXXX.....##
##.####XXXXXXXXX####.##
##.#################.##
##.#XXXXXXXXXXXXXXX#.##
##.#XXXXXXXXXXXXXXX#.##
##..XXXXXXXXXXXXXXX..##
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
#######################
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###########+###########
###########.#XXXXXXXXX#
###########.#XXXXXXXXX#
###########.#XXXXXXXXX#
###########.#XXXXXXXXX#
###########..XXXXXXXXX#
###########.#XXXXXXXXX#
###########.#XXXXXXXXX#
###########.#XXXXXXXXX#
###########.#XXXXXXXXX#
###########+###########
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#######################
#######################
#######################
#XXXXXXXXXXXXXXX#######
#XXXXXXXXXXXXXXX#######
+XXXXXXXXXXXXXXX#######
#XXXXXXXXXXXXXXX#######
#XXXXXXXXXXXXXXX#######
#######################
#######################
#######################
""",use_prob=0.8,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###########+###########
#.....................#
#.###################.#
#.#.................#.#
#.#.#######.#######...#
#.#.#.............#.#.#
#...#######.#######.#.#
#.#.................#.#
#.###################.#
#.....................#
###########+###########
""",use_prob=0.3,self_only_properties={TP_MAZY:1}))


basic_templates.append(Template("""
###########O###########
#######XXXXXXXXX#######
#######XXXXXXXXX#######
#######XXXXXXXXX#######
#######XXXXXXXXX#######
#######XXXXXXXXX#######
#######XXXXXXXXX#######
#######XXXXXXXXX#######
#######XXXXXXXXX#######
#######XXXXXXXXX#######
###########O###########
""",use_prob=0.5,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###########O###########
#.....................#
#..###.###...###.###..#
#..#XXXXX#...#XXXXX#..#
#..#XXXXX#...#XXXXX#..#
#...XXXXX.....XXXXX...#
#..#XXXXX#...#XXXXX#..#
#..#XXXXX#...#XXXXX#..#
#..###.###...###.###..#
#.....................#
###########O###########
""",use_prob=0.2))


basic_templates.append(Template("""
###########+###########
####...............####
####.######.######.####
##XXXXX##XXXXX##XXXXX##
##XXXXX##XXXXX##XXXXX##
##XXXXX##XXXXX##XXXXX##
##XXXXX##XXXXX##XXXXX##
##XXXXX##XXXXX##XXXXX##
####.######.######.####
####...............####
###########+###########
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###########+###########
####...............####
####.######.######.####
##XXXXX##XXXXX##XXXXX##
##XXXXX##XXXXX##XXXXX##
##XXXXX..XXXXX..XXXXX##
##XXXXX##XXXXX##XXXXX##
##XXXXX##XXXXX##XXXXX##
####.######.######.####
####...............####
###########+###########
""",use_prob=0.3))


basic_templates.append(Template("""
###########+###########
##########XXX##########
##########XXX##########
##########XXX##########
##########XXX##########
##########XXX##########
##########XXX##########
##########XXX##########
##########XXX##########
##########XXX##########
###########+###########
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###########O###########
##XXX#XXX#XXX#XXX#XXX##
##XXX#XXX#XXX#XXX#XXX##
##XXX.XXX.XXX.XXX.XXX##
##XXX#XXX#XXX#XXX#XXX##
##XXX#XXX#XXX#XXX#XXX##
##XXX#XXX#XXX#XXX#XXX##
##XXX.XXX.XXX.XXX.XXX##
##XXX#XXX#XXX#XXX#XXX##
##XXX#XXX#XXX#XXX#XXX##
###########O###########
""",use_prob=0.2))


basic_templates.append(Template("""
###########+###########
#####.......###########
#####.#################
#####.#################
#####.#XXXXXXXXX#######
#####..XXXXXXXXX..#####
#######XXXXXXXXX#.#####
#################.#####
#################.#####
###########.......#####
###########+###########
""",use_prob=0.3))


basic_templates.append(Template("""
###########+###########
##..........###########
##.####################
##.#XXXXXXXXXXXXXXX####
##.#XXXXXXXXXXXXXXX####
##..XXXXXXXXXXXXXXX..##
####XXXXXXXXXXXXXXX#.##
####XXXXXXXXXXXXXXX#.##
####################.##
###########..........##
###########+###########
""",use_prob=0.3))


basic_templates.append(Template("""
###########+###########
##...................##
##.#####.#####.#####.##
##.#XXXXXXXXXXXXXXX#.##
##.#XXXXXXXXXXXXXXX#.##
##.#XXXXXXXXXXXXXXX#.##
##.#XXXXXXXXXXXXXXX#.##
##.#XXXXXXXXXXXXXXX#.##
##.#####.#####.#####.##
##...................##
###########+###########
""",use_prob=0.3))


basic_templates.append(Template("""
###########+###########
##...................##
##.#################.##
##.#XXXXXXXXXXXXXXX#.##
##.#XXXXXXXXXXXXXXX#.##
##..XXXXXXXXXXXXXXX..##
##.#XXXXXXXXXXXXXXX#.##
##.#XXXXXXXXXXXXXXX#.##
##.#################.##
##...................##
###########+###########
""",use_prob=0.3))


basic_templates.append(Template("""
###########+###########
##...................##
##.#####.#####.#####.##
##.#XXXXXXXXXXXXXXX#.##
##.#XXXXXXXXXXXXXXX#.##
##..XXXXXXXXXXXXXXX..##
##.#XXXXXXXXXXXXXXX#.##
##.#XXXXXXXXXXXXXXX#.##
##.#####.#####.#####.##
##...................##
###########+###########
""",use_prob=0.3))


basic_templates.append(Template("""
###########+###########
###########.###########
###########.###########
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
+...XXXXXXXXXXXXXXX...+
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
###########.###########
###########.###########
###########+###########
""",use_prob=0.6,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###########+###########
###########.###########
###########.###########
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
####XXXXXXXXXXXXXXX####
###########.###########
###########.###########
###########+###########
""",use_prob=0.6,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###########+###########
########....###########
########.##############
#XXXXXXXXXXXXXXX#XXXXX#
#XXXXXXXXXXXXXXX#XXXXX#
OXXXXXXXXXXXXXXX.XXXXXO
#XXXXXXXXXXXXXXX#XXXXX#
#XXXXXXXXXXXXXXX#XXXXX#
########.##############
########....###########
###########+###########
""",use_prob=0.5,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###########O###########
#.....................#
#.....................#
#.....................#
#.....................#
O.....................O
#.....................#
#.....................#
#.....................#
#.....................#
###########O###########
""",use_prob=0.6,inheritable_properties={TP_WANT_ENCOUNTER:1,TP_OPEN:1}))


basic_templates.append(Template("""
###########O###########
#MMMMMMMMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMMMMMMMM#
OMMMMMMMMMMMMMMMMMMMMMO
#MMMMMMMMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMMMMMMMM#
#MMMMMMMMMMMMMMMMMMMMM#
###########O###########
""",use_prob=0.4,self_only_properties={TP_MAZY:1}))


basic_templates.append(Template("""
###########O###########
#BBBBBBBBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBBBBBBBB#
OBBBBBBBBBBBBBBBBBBBBBO
#BBBBBBBBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBBBBBBBB#
###########O###########
""",use_prob=0.1,self_only_properties={TP_OPEN:1}))


basic_templates.append(Template("""
###########O###########
#BBBBBBBBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBBBBBBBB#
OBBBBBBBBBBBBBBBBBBBBBO
#BBBBBBBBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBBBBBBBB#
#BBBBBBBBBBBBBBBBBBBBB#
###########O###########
""",use_prob=0.07,inheritable_properties={TP_CONVERT:{'#':':'},TP_OPEN:1}))


basic_templates.append(Template("""
###########+###########
#XXXXXXXXX#.#XXXXXXXXX#
#XXXXXXXXX#.#XXXXXXXXX#
#XXXXXXXXX#.#XXXXXXXXX#
#XXXXXXXXX#.#XXXXXXXXX#
OXXXXXXXXX...XXXXXXXXXO
#XXXXXXXXX#.#XXXXXXXXX#
#XXXXXXXXX#.#XXXXXXXXX#
#XXXXXXXXX#.#XXXXXXXXX#
#XXXXXXXXX#.#XXXXXXXXX#
###########+###########
""",use_prob=0.7,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###########O###########
#...........#XXXXXXXXX#
#...........#XXXXXXXXX#
#...........#XXXXXXXXX#
#...........#XXXXXXXXX#
O............XXXXXXXXXO
#...........#XXXXXXXXX#
#...........#XXXXXXXXX#
#...........#XXXXXXXXX#
#...........#XXXXXXXXX#
###########O###########
""",use_prob=0.3,inheritable_properties={TP_WANT_ENCOUNTER:1},self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###########O###########
#.......##..........###
#.##....##.....##...###
#.##...........##.....#
#.........##..........#
O...##....##......##..O
#...##............##..#
#............##.......#
#.##....##...##..##...#
#.##....##.......##...#
###########O###########
""",use_prob=0.4,inheritable_properties={TP_WANT_ENCOUNTER:1}))


basic_templates.append(Template("""
###########+###########
#.....................#
#.###################.#
#.#.................#.#
#.#.#######.#######...#
#.#.#.............#...#
#...#######.#######.#.#
#.#.................#.#
#.###################.#
#.....................#
###########+###########
""",use_prob=0.3,self_only_properties={TP_MAZY:1}))


basic_templates.append(Template("""
###########O###########
#.....................#
#..#######...#######..#
#..#XXXXX#...#XXXXX#..#
#..#XXXXX#...#XXXXX#..#
O..#XXXXX.....XXXXX#..O
#..#XXXXX#...#XXXXX#..#
#..#XXXXX#...#XXXXX#..#
#..#######...#######..#
#.....................#
###########O###########
""",use_prob=0.3,child_only_properties={TP_WANT_ENCOUNTER:1}))


basic_templates.append(Template("""
###########+###########
####...............####
####.######.######.####
##XXXXX##XXXXX##XXXXX##
##XXXXX##XXXXX##XXXXX##
O.XXXXX..XXXXX..XXXXX.O
##XXXXX##XXXXX##XXXXX##
##XXXXX##XXXXX##XXXXX##
####.######.######.####
####...............####
###########+###########
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###########O###########
#######XXXXXXXXX#######
#######XXXXXXXXX#######
#XXXXX#XXXXXXXXX#XXXXX#
#XXXXX#XXXXXXXXX#XXXXX#
OXXXXX.XXXXXXXXX.XXXXXO
#XXXXX#XXXXXXXXX#XXXXX#
#XXXXX#XXXXXXXXX#XXXXX#
#######XXXXXXXXX#######
#######XXXXXXXXX#######
###########O###########
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###########O###########
#XXX#.............#XXX#
#XXX#.............#XXX#
#XXX...............XXX#
#XXX#.............#XXX#
OXXX#.............#XXXO
#XXX#.............#XXX#
#XXX...............XXX#
#XXX#.............#XXX#
#XXX#.............#XXX#
###########O###########
""",use_prob=0.3,self_only_properties={TP_OPEN:1,TP_CLASSIC:1}))


basic_templates.append(Template("""
###########O###########
#XXX#XXX#.....#XXX#XXX#
#XXX#XXX#.....#XXX#XXX#
#XXX.XXX.......XXX.XXX#
#XXX#XXX#.....#XXX#XXX#
OXXX#XXX#.....#XXX#XXXO
#XXX#XXX#.....#XXX#XXX#
#XXX.XXX.......XXX.XXX#
#XXX#XXX#.....#XXX#XXX#
#XXX#XXX#.....#XXX#XXX#
###########O###########
""",use_prob=0.3))


basic_templates.append(Template("""
###########+###########
#######XXX#.#XXX#######
#######XXX#.#XXX#######
#XXXXX#XXX...XXX#XXXXX#
#XXXXX#XXX#.#XXX#XXXXX#
OXXXXX.XXX#.#XXX.XXXXXO
#XXXXX#XXX#.#XXX#XXXXX#
#XXXXX#XXX...XXX#XXXXX#
#######XXX#.#XXX#######
#######XXX#.#XXX#######
###########+###########
""",use_prob=0.3))


basic_templates.append(Template("""
###########+###########
#XXX#.......#....##XXX#
#XXX#.###.###.##..#XXX#
#XXX..###.###.###..XXX#
#XXX#.#XXXXXXXXX###XXX#
OXXX#..XXXXXXXXX..#XXXO
#XXX###XXXXXXXXX#.#XXX#
#XXX..###.###.###..XXX#
#XXX#..##.###.###.#XXX#
#XXX##....#.......#XXX#
###########+###########
""",use_prob=0.2))


basic_templates.append(Template("""
###########+###########
##...................##
##.#################.##
##.#XXXXXXXXXXXXXXX#.##
##.#XXXXXXXXXXXXXXX#.##
+...XXXXXXXXXXXXXXX...+
##.#XXXXXXXXXXXXXXX#.##
##.#XXXXXXXXXXXXXXX#.##
##.#################.##
##...................##
###########+###########
""",use_prob=0.5))


basic_templates.append(Template("""
###########+###########
##...................##
##.#####.#####.#####.##
##.#XXXXXXXXXXXXXXX#.##
##.#XXXXXXXXXXXXXXX#.##
+...XXXXXXXXXXXXXXX...+
##.#XXXXXXXXXXXXXXX#.##
##.#XXXXXXXXXXXXXXX#.##
##.#####.#####.#####.##
##...................##
###########+###########
""",use_prob=0.3))


basic_templates.append(Template("""
##O##
##.##
O...#
##.##
#####
""",use_prob=0.2))


basic_templates.append(Template("""
##O##
#...#
O.!.O
#...#
##O##
""",use_prob=0.2,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
##O##
#...#
O..##
#.###
#####
""",use_prob=0.15))


basic_templates.append(Template("""
#####
#####
+.#.+
#...#
##O##
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
##O##
#...#
O...O
#...#
##O##
""",use_prob=1,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
##O##
##.##
O...O
##.##
##O##
""",use_prob=0.8))


basic_templates.append(Template("""
##O##
#...#
O.#.O
#...#
##O##
""",use_prob=0.3))


basic_templates.append(Template("""
###+###
###..##
###...#
+.....#
#.....#
##...##
#######
""",use_prob=0.1,self_only_properties={TP_ORGANIC:1}))


basic_templates.append(Template("""
###O###
#.....#
#.~~~.#
O.~~~.O
#.~~~.#
#.....#
###O###
""",use_prob=0.1,inheritable_properties={TP_WET:1},self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###O###
#.....#
#.....#
O..!..O
#.....#
#.....#
###O###
""",use_prob=0.1,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###+###
#.....#
#....##
+...###
#..####
#.#####
#######
""",use_prob=0.1))


basic_templates.append(Template("""
###+###
###..##
####.##
+.#XXX#
#..XXX#
###XXX#
#######
""",use_prob=0.15))


basic_templates.append(Template("""
###O###
##...##
##...##
##...##
##...##
##...##
###O###
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###O###
###.###
##...##
##...##
##...##
###.###
###O###
""",use_prob=0.15,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###O###
###.###
##XXX##
##XXX##
##XXX##
###.###
###O###
""",use_prob=0.15))


basic_templates.append(Template("""
###+###
###.###
##...##
##...##
##...##
#######
#######
""",use_prob=0.5,inheritable_properties={TP_WANT_ENCOUNTER:1},self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###+###
#.....#
#.###.#
#.#.#.#
#.#.#.#
#.....#
#######
""",use_prob=0.15))


basic_templates.append(Template("""
###+###
###.###
##XXX##
##XXX##
##XXX##
#######
#######
""",use_prob=0.5,child_only_properties={TP_WANT_ENCOUNTER:1},self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#######
#######
#######
+..#..+
#..#..#
#.....#
###O###
""",use_prob=0.15))


basic_templates.append(Template("""
#######
#.....#
##...##
+.....+
###.###
###.###
###+###
""",use_prob=0.3))


basic_templates.append(Template("""
###O###
#.....#
#.....#
O.....O
#.....#
#.....#
###O###
""",use_prob=0.5,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###O###
#BBBBB#
#BBBBB#
OBBBBBO
#BBBBB#
#BBBBB#
###O###
""",use_prob=0.03,inheritable_properties={TP_CONVERT:{'#':'*'},TP_FIERY:1}))


basic_templates.append(Template("""
###O###
#BBBBB#
#BBBBB#
OBBBBBO
#BBBBB#
#BBBBB#
###O###
""",use_prob=0.1))


basic_templates.append(Template("""
###O###
###.###
##...##
O.....O
##...##
###.###
###O###
""",use_prob=0.4))


basic_templates.append(Template("""
###O###
#.....#
#.#.#.#
O.....O
#.#.#.#
#.....#
###O###
""",use_prob=0.15))


basic_templates.append(Template("""
###O###
#.....#
#.*.*.#
O.....O
#.*.*.#
#.....#
###O###
""",use_prob=0.1,inheritable_properties={TP_FIERY:1}))


basic_templates.append(Template("""
###O###
##...##
#.....#
O.....O
#.....#
##...##
###O###
""",use_prob=0.3))


basic_templates.append(Template("""
###O###
###.###
##XXX##
O.XXX.O
##XXX##
###.###
###O###
""",use_prob=0.15,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###########
###########
+.........+
###########
###########
""",use_prob=1,self_only_properties={TP_CLASSIC:1,TP_CORRIDOR:1}))


basic_templates.append(Template("""
###########
#...#...###
+.#.#.#.#.O
###...#...#
###########
""",use_prob=0.3,self_only_properties={TP_MAZY:1}))


basic_templates.append(Template("""
###########
###.....###
+.........+
###.....###
###########
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###########
#.........#
O.........O
#.........#
###########
""",use_prob=0.8,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###########
##XXX#XXX##
+.XXX.XXX##
##XXX#XXX##
###########
""",use_prob=0.8,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###########
#######XXX#
+......XXX#
#######XXX#
###########
""",use_prob=0.5,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###########
####XXX####
+...XXX...+
####XXX####
###########
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###########
#..*...*..#
+..*...*..+
#..*...*..#
###########
""",use_prob=0.2,inheritable_properties={TP_FIERY:1}))


basic_templates.append(Template("""
###O###O###
#.........#
O.........O
#.........#
###O###O###
""",use_prob=1,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###+###+###
###.###.###
+.........+
###.###.###
###+###+###
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1,TP_CORRIDOR:1}))


basic_templates.append(Template("""
###O###O###
##.......##
O..#####..O
##.......##
###O###O###
""",use_prob=0.3,self_only_properties={TP_MAZY:1}))


basic_templates.append(Template("""
###O###O###
#.#...#...#
O.#.#.#.#.O
#...#...#.#
###O###O###
""",use_prob=0.3,self_only_properties={TP_MAZY:1}))


basic_templates.append(Template("""
###O###O###
##XXX#XXX##
O.XXX.XXX.O
##XXX#XXX##
###O###O###
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###+###+###
###.###.###
###.....###
###.###.###
###+###+###
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###O###O###
##.......##
##.#####.##
##.......##
###O###O###
""",use_prob=0.3,self_only_properties={TP_MAZY:1}))


basic_templates.append(Template("""
###O###O###
##.......##
##.......##
##.......##
###O###O###
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###O###O###
##XXX#XXX##
##XXX.XXX##
##XXX#XXX##
###O###O###
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###O###O###
#.........#
+.#######.+
###########
###########
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1,TP_CORRIDOR:1}))


basic_templates.append(Template("""
###+###+###
###.###.###
+.#.###.#.+
#.........#
###########
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###+###+###
##XXX#XXX##
##XXX.XXX##
##XXX#XXX##
###########
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###O###O###
#.........#
O.........O
#.........#
#####+#####
""",use_prob=1))


basic_templates.append(Template("""
###+###+###
###.....###
+.........+
###.....###
#####+#####
""",use_prob=0.8))


basic_templates.append(Template("""
###+###+###
###.###.###
+...###...+
###.....###
#####+#####
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###+###+###
#...#.#...#
+.#.#.#.#.+
###.....###
#####+#####
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1,TP_MAZY:1}))


basic_templates.append(Template("""
###+###+###
##.......##
O.........O
###.....###
#####+#####
""",use_prob=0.6))


basic_templates.append(Template("""
###+###+###
#.........#
O.#######.O
#.........#
#####+#####
""",use_prob=0.3,self_only_properties={TP_MAZY:1}))


basic_templates.append(Template("""
###+###+###
###.###.###
###.###.###
###.....###
#####O#####
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###+###+###
#...###...#
#...###...#
#.........#
#####O#####
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))

basic_templates.append(Template("""
#####+#####
#####.#####
#####..####
####.....##
###......##
+.........#
##........#
###.......#
###.......#
#####....##
###########
""",use_prob=0.3,self_only_properties={TP_ORGANIC:1}))


basic_templates.append(Template("""
#####+#####
#.........#
#........##
#.......###
#......####
+.....#####
#....######
#...#######
#..########
#.#########
###########
""",use_prob=0.2,inheritable_properties={TP_WANT_ENCOUNTER:1}))


basic_templates.append(Template("""
#####+#####
####...####
#####...###
######.####
#.##XXXXX##
+..#XXXXX##
#...XXXXX##
##.#XXXXX##
####XXXXX##
###########
###########
""",use_prob=0.2))


basic_templates.append(Template("""
#####+#####
#####.....#
#########.#
###XXXXX#.#
###XXXXX#.#
+.#XXXXX..#
#.#XXXXX###
#.#XXXXX###
#.###.#####
#.....#####
###########
""",use_prob=0.3))


basic_templates.append(Template("""
#####+#####
#####.#XXX#
#####.#XXX#
#####..XXX#
#####.#XXX#
#####.#XXXO
#####.#XXX#
#####..XXX#
#######XXX#
#######XXX#
###########
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#####O#####
####XXX####
####XXX####
####XXX####
####XXX####
####XXX####
####XXX####
####XXX####
####XXX####
####XXX####
#####O#####
""",use_prob=0.6,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#####O#####
####XXX####
####XXX####
####XXX..##
####XXX#.##
####XXX#..+
####XXX#.##
####XXX..##
####XXX####
####XXX####
#####O#####
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#####O#####
####...####
###.....###
##.......##
##.......##
##.......##
##.......##
##.......##
###.....###
####...####
#####O#####
""",use_prob=0.5,inheritable_properties={TP_WANT_ENCOUNTER:1}))


basic_templates.append(Template("""
#####+#####
#####.#####
#####.#####
###XXXXX###
###XXXXX###
###XXXXX###
###XXXXX###
###XXXXX###
#####.#####
#####.#####
#####+#####
""",use_prob=0.5,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#####+#####
#MMMMMMMMM#
#MMMMMMMMM#
#MMMMMMMMM#
#MMMMMMMMM#
#.#######.#
#MMMMMMMMM#
#MMMMMMMMM#
#MMMMMMMMM#
#MMMMMMMMM#
#####+#####
""",use_prob=0.3,self_only_properties={TP_MAZY:1}))


basic_templates.append(Template("""
#####+#####
#####.#####
##.......##
##.......##
##.......##
##.......##
##.......##
##.......##
##.......##
###########
###########
""",use_prob=0.3,inheritable_properties={TP_WANT_ENCOUNTER:1},self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#####+#####
#####.#####
#####.#####
###XXXXX###
###XXXXX###
###XXXXX###
###XXXXX###
###XXXXX###
###########
###########
###########
""",use_prob=0.5,child_only_properties={TP_WANT_ENCOUNTER:1},self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#####+#####
####XXX####
####XXX####
####XXX####
#####.#####
###XXXXX###
###XXXXX###
###XXXXX###
###XXXXX###
###XXXXX###
###########
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###########
###########
###########
###########
###########
+..#####..+
#..#####..#
#..#####..#
#.........#
#.........#
#####O#####
""",use_prob=0.3))


basic_templates.append(Template("""
###########
##.......##
###.....###
####...####
#.##...##.#
+.........+
#.###.###.#
#####.#####
#####.#####
####...####
#####+#####
""",use_prob=0.2))


basic_templates.append(Template("""
###########
###XXXXX###
###XXXXX###
#..XXXXX..#
#.#XXXXX#.#
+.#XXXXX#.+
#####.#####
#####.#####
#####.#####
#####.#####
#####+#####
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#####+#####
#####.#####
#####.#####
###XXXXX###
###XXXXX###
+..XXXXX..+
###XXXXX###
###XXXXX###
###########
###########
###########
""",use_prob=0.5,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#####+#####
#XXX#.#XXX#
#XXX#.#XXX#
#XXX...XXX#
#XXX#.#XXX#
OXXX#.#XXXO
#XXX#.#XXX#
#XXX...XXX#
#XXX###XXX#
#XXX###XXX#
###########
""",use_prob=0.8,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#####+#####
#####.#XXX#
#####.#XXX#
#####..XXX#
#####.#XXX#
#####.#XXXO
#####.#XXX#
#####..XXX#
#####.#XXX#
#####.#XXX#
#####+#####
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#####O#####
#.........#
#.........#
#.........#
#.........#
O.........O
#.........#
#.........#
#.........#
#.........#
#####O#####
""",use_prob=0.6,inheritable_properties={TP_WANT_ENCOUNTER:1},self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#####O#####
#.........#
#.........#
#..~~.~~..#
#..~...~..#
O....!....O
#..~...~..#
#..~~.~~..#
#.........#
#.........#
#####O#####
""",use_prob=0.2,inheritable_properties={TP_WET:1}))


basic_templates.append(Template("""
#####O#####
#MMMMMMMMM#
#MMMMMMMMM#
#MMMMMMMMM#
#MMMMMMMMM#
OMMMMMMMMMO
#MMMMMMMMM#
#MMMMMMMMM#
#MMMMMMMMM#
#MMMMMMMMM#
#####O#####
""",use_prob=0.4,self_only_properties={TP_MAZY:1}))


basic_templates.append(Template("""
#####O#####
#.........#
#.........#
#...*.*...#
#..*...*..#
O.........O
#..*...*..#
#...*.*...#
#.........#
#.........#
#####O#####
""",use_prob=0.2,inheritable_properties={TP_FIERY:1,TP_WANT_ENCOUNTER:1}))


basic_templates.append(Template("""
#####O#####
#MMMMMMMMM#
#MMMMMMMMM#
#MMMMMMMMM#
#MMMMMMMMM#
OMMMMMMMMMO
#MMMMMMMMM#
#MMMMMMMMM#
#MMMMMMMMM#
#MMMMMMMMM#
#####O#####
""",use_prob=0.1,inheritable_properties={TP_CONVERT:{'#':'*'},TP_FIERY:1,TP_MAZY:1}))


basic_templates.append(Template("""
#####O#####
#BBBBBBBBB#
#BBBBBBBBB#
#BBBBBBBBB#
#BBBBBBBBB#
OBBBBBBBBBO
#BBBBBBBBB#
#BBBBBBBBB#
#BBBBBBBBB#
#BBBBBBBBB#
#####O#####
""",use_prob=0.1))


basic_templates.append(Template("""
#####O#####
#BBBBBBBBB#
#BBBBBBBBB#
#BBBBBBBBB#
#BBBBBBBBB#
OBBBBBBBBBO
#BBBBBBBBB#
#BBBBBBBBB#
#BBBBBBBBB#
#BBBBBBBBB#
#####O#####
""",use_prob=0.1,inheritable_properties={TP_CONVERT:{'#':':'}}))


basic_templates.append(Template("""
#####O#####
#BBBBBBBBB#
#BBBBBBBBB#
#BBBBBBBBB#
#BBBBBBBBB#
OBBBBBBBBBO
#BBBBBBBBB#
#BBBBBBBBB#
#BBBBBBBBB#
#BBBBBBBBB#
#####O#####
""",use_prob=0.2,inheritable_properties={TP_CONVERT:{'#':'*'},TP_FIERY:1}))


basic_templates.append(Template("""
#####O#####
#.........#
#.###.###.#
#.#.....#.#
#.#.....#.#
O.........O
#.#.....#.#
#.#.....#.#
#.###.###.#
#.........#
#####O#####
""",use_prob=0.3,inheritable_properties={TP_WANT_ENCOUNTER:1}))


basic_templates.append(Template("""
#####O#####
#......##.#
#.##...##.#
#.##......#
#.....##..#
O..##.##..O
#..##.....#
#......##.#
#.##...##.#
#.##......#
#####O#####
""",use_prob=0.3))


basic_templates.append(Template("""
#####O#####
#.........#
#.#######.#
#.#######.#
#.#######.#
O.#######.O
#.#######.#
#.#######.#
#.#######.#
#.........#
#####O#####
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#####O#####
#####.#####
###.....###
##.......##
##.......##
O.........O
##.......##
##.......##
###.....###
#####.#####
#####O#####
""",use_prob=0.8,inheritable_properties={TP_WANT_ENCOUNTER:1}))


basic_templates.append(Template("""
#####O#####
#.........#
#.#######.#
#.#.....#.#
#.#...#.#.#
O.#...#.#.O
#.#####.#.#
#.......#.#
#########.#
#####.....#
#####O#####
""",use_prob=0.3,inheritable_properties={TP_WANT_ENCOUNTER:1},self_only_properties={TP_MAZY:1}))


basic_templates.append(Template("""
#####O#####
#.........#
#.#######.#
#.#.....#.#
#.#.!.#.#.#
O.#...#.#.O
#.#####.#.#
#.......#.#
#########.#
#####.....#
#####O#####
""",use_prob=0.2,self_only_properties={TP_MAZY:1}))


basic_templates.append(Template("""
#####O#####
#.........#
#.###.###.#
#.#XXXXX#.#
#.#XXXXX#.#
O..XXXXX..O
#.#XXXXX#.#
#.#XXXXX#.#
#.###.###.#
#.........#
#####O#####
""",use_prob=0.3))


basic_templates.append(Template("""
#####O#####
#.........#
#.###.###.#
#.#XXXXX#.#
#.#XXXXX#.#
O.#XXXXX#.O
#.#XXXXX#.#
#.#XXXXX#.#
#.#######.#
#.........#
#####O#####
""",use_prob=0.3,child_only_properties={TP_WANT_ENCOUNTER:1}))


basic_templates.append(Template("""
#####+#####
#####.#####
#####.#####
###XXXXX###
###XXXXX###
+..XXXXX..+
###XXXXX###
###XXXXX###
#####.#####
#####.#####
#####+#####
""",use_prob=0.8,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#####+#####
#XXX#.#XXX#
#XXX#.#XXX#
#XXX...XXX#
#XXX#.#XXX#
OXXX#.#XXXO
#XXX#.#XXX#
#XXX...XXX#
#XXX#.#XXX#
#XXX#.#XXX#
#####+#####
""",use_prob=0.6,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
#####O#####
#.....#XXX#
#.....#XXX#
#......XXX#
#.....#XXX#
O.....#XXXO
#.....#XXX#
#......XXX#
#.....#XXX#
#.....#XXX#
#####O#####
""",use_prob=0.3,self_only_properties={TP_CLASSIC:1}))


basic_templates.append(Template("""
###########
#######.:##
####.....:#
##.....:.:#
##.###...:#
##.####.:##
##..#######
###..######
####..#####
#####.#####
#####+#####
""",use_prob=0.3))

